对于mmap的疑问

发布于 2022-09-18 19:15:28 字数 181 浏览 12 评论 0

看到一篇文章讲解普通文件使用mmap共享, 使用 mmap 系统调用就行了? 不需要自己实现这个函数么

记得在驱动里面有一个 mmap 的函数, 那这个mmap 实现 跟那个系统的mmap 有什么不同?? 不是一样的么,

[ 本帖最后由 star316 于 2009-3-4 16:04 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

罪#恶を代价 2022-09-25 19:15:28

系统调用mmap最终会调用驱动的mmap,普通文件能直接用是因为文件系统的驱动中实现了mmap调用,你可以在代码中搜到的,多数用了generic_file_mmap吧。

闻呓 2022-09-25 19:15:28

那就是说,假如自己写的设备驱动如果要使用MMAP 的话,需要自己写这个函数,?

会发光的星星闪亮亮i 2022-09-25 19:15:28

一般来说是的,但对于网络设备,由于没有设备文件,不知道能不能搞。见有人用过另一种办法是通过/proc来把设备使用的物理地址导出来,然后通过/dev/mem来执行mmap,也是可以的。

土豪 2022-09-25 19:15:28

驱动自己写mmap,应用层调用mmap的时候会向驱动中传递参数,驱动中根据参数判断应用层想要映射哪部分的内存(假设大小为x),然后返回页表信息,app保存这个返回值base,以后app访问base+x范围的时候,就可以访问到驱动中的内容了,应用层的mmap和驱动mmap不是一个东西哦,app在调用mmap是,系统内部会去调用相应drv中的mmap~

遗心遗梦遗幸福 2022-09-25 19:15:28

一般fpga的驱动程序都使用mmap直接把内核内存映射给应用层直接访问的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文