繁体   English   中英

Linux中MMAP值的生命周期

[英]Lifetime of MMAP value in linux

嗨,我使用在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 谢谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM