【发布时间】:2012-03-21 02:53:13
【问题描述】:
我正在尝试了解 mmap 的工作原理。 mmap 的用户级调用如下所示。
void *mmap(void *addr, size_t len, int prot, int flags,
int fildes, off_t off);
但特定设备驱动程序的内核级 mmap 如下所示:
int <device_name>_mmap(struct file*fp, struct vm_area_struct *vma)
我也查看了源代码,但找不到两者之间的联系。
特定设备的 mmap 如何获取其参数“struct vm_area_struct *vma”? 你能帮我理解吗?感谢您的帮助。
【问题讨论】:
-
其实我找到了但是找不到连接
-
vm_area_struct包含有关要在用户进程中映射的虚拟地址范围以及应用程序要映射的设备上的偏移量的信息。file参数对应用户端的文件描述符。 -
最小可运行内核模块示例:stackoverflow.com/questions/10760479/…
标签: c linux-kernel device-driver linux-device-driver