【发布时间】:2017-05-23 06:17:14
【问题描述】:
我有一个分配内存的内核模块,我想与用户进程共享该内存。在普通模式下,我们只能使用:mmap、/proc、shmem 等。但在单用户模式下,对于嵌入式设备,没有办法共享简单的指针吗?
【问题讨论】:
我有一个分配内存的内核模块,我想与用户进程共享该内存。在普通模式下,我们只能使用:mmap、/proc、shmem 等。但在单用户模式下,对于嵌入式设备,没有办法共享简单的指针吗?
【问题讨论】:
“单用户模式”是用户空间定义的约定。它对内核没有意义;所有相同的规则都适用于“正常模式”。
如果你想从用户空间访问内存——任何内存,你需要以某种方式将该内存映射到进程中。在特殊文件或设备节点上使用mmap() 是最自然的方法。
【讨论】:
伪 sysfs 文件系统 (/sys) 正是为此目的而设计的(将内核数据暴露给用户空间)。您也可以从用户空间写入这些数据结构。
【讨论】:
read、write、mmap 等),就像它们在普通文件系统中一样。 ramfs 的唯一区别是文件永远不会写入持久存储。