如果我从设备mmap()
,例如:/dev/mem
。
fbfd = open("/dev/mem", O_RDWR);
dataBuffer = (char *)mmap(0,
FILESIZE,
PROT_READ | PROT_WRITE,
MAP_SHARED,
fbfd,
0);
然后我可以看到remap_pfn_range
的实际函数是mmap_mem()
,也就是/dev的
我想。f_op->mmap
/mem
但是如果我使用 MAP_ANONYMOUS
而没有 fd 的 mmap()
,将调用哪个函数来执行 remap_pfn_range
?
dataBuffer = (char *)mmap(0,
FILESIZE,
PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_ANONYMOUS,
0,
0);
最佳答案
好的,我找到答案了......
没有fd,所以没有f_op->mmap
。
如果 mmap()
带有 MAP_ANONYMOUS
和 MAP_SHARED
,它将由 shmem_zero_setup()
处理,设置一个共享的匿名映射,并为 do_mmap_pgoff()
准备一个 vma
。
关于linux - 如果 mmap() 没有 fd(使用 MAP_ANONYMOUS),将调用哪个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269421/