gpt4 book ai didi

c - Linux 中 MMAP 值的生命周期

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:35 25 4
gpt4 key购买 nike

您好,我使用在 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 吗?谢谢。

最佳答案

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

关于c - Linux 中 MMAP 值的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com