linux中MMAP值的生命周期

时间:2014-09-20 02:38:55

标签: c linux mmap beagleboneblack

嗨我正在使用在debian上运行的beaglebone black,我在 / dev / mem 文件上使用mmap来访问GPIO寄存器。 我有一个包含我的映射函数的.c文件:

//sample code

unsigned int *gpio_get_map(int gpio)

{

    unsigned int *gpio_addr = NULL;

    int fd = open("/dev/mem", O_RDWR);
        gpio_addr = mmap(0, GPIO_SIZE, PROT_READ | PROT_WRITE,MAP_SHARED,fd, gpio_get_number(gpio));
        if(gpio_addr == MAP_FAILED)
        {
            printf("Unable to map GPIO : %s\n",strerror(errno));
            close(fd);
            return NULL;
        }
        close(fd);
        return gpio_addr;
}

然后我在另一个.c文件中调用此函数以获取gpio_addr的值并使用它来操作GPIO,它工作正常但我不确定gpio_addr有效期多久。 gpio_addr给出的地址是否始终有效?或者我应该在一段时间后再打电话给另一个mmap?感谢。

1 个答案:

答案 0 :(得分:3)

您不需要续订映射。它将在调用过程中保持有效,直到您明确取消映射它(或过程结束)。