首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vmalloc.c中的标志VM_IOREMAP是什么意思?

vmalloc.c中的标志VM_IOREMAP是什么意思?
EN

Stack Overflow用户
提问于 2014-02-19 05:07:40
回答 1查看 498关注 0票数 0

http://lxr.free-electrons.com/source/include/linux/vmalloc.h?v=3.4;a=arm#L11

vm_structvmalloc.c中有许多标志。我可以理解VM_ALLOC,这意味着vm_struct是由vmalloc()调用构造的。

但其他旗帜意味着什么呢?尤其是VM_IOREMAP。它被用于Android绑定驱动程序中。

http://lxr.free-electrons.com/source/drivers/staging/android/binder.c?v=3.4;a=arm#L2819

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 09:53:49

定义VM_IOREMAP 0x00000001 /* ioremap()和朋友*/

VM_IOREMAP意味着这个虚拟内存区域由ioremap()、*通常*(但不限于*)创建,以便将硬件设备(如PCI设备)的I/O内存区域(其物理地址)映射到内核虚拟地址范围,因此我们可以通过简单的读/写访问I/O内存。

驱动程序细节不多,但在您提到的Android绑定驱动程序中,似乎驱动程序使用它来实现mmap()系统调用,即在驱动程序和用户空间代码之间共享一组RAM页面(而不是设备I/O内存区域)。因此,在用户空间代码mmap()驱动程序char设备文件之后,它可以直接从用户级别直接访问那些RAM页面,而无需进行内核-用户级别的转换。这种编码技巧的常见用法(就我所记得的其他驱动程序情况而言)是,驱动程序在内核级的RAM页面中生成数据内容,用户级代码直接从用户级别读取这些RAM页面的数据内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21871555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档