在单用户模式下将内存从Linux内核共享到用户空间

时间:2017-01-09 02:55:06

标签: linux kernel driver

我有一个分配内存的内核模块,我想与用户进程共享此内存。在正常模式下,我们只能使用:mmap,/ proc,shmem等,但在单用户模式下,对于嵌入式设备,是不是有办法共享一个简单的指针?

2 个答案:

答案 0 :(得分:2)

“单用户模式”是用户空间定义的约定。它对内核没有意义;所有相同的规则都适用于“普通模式”。

如果要从用户空间访问内存 - 任何内存,则需要以某种方式将该内存映射到进程中。在特殊文件或设备节点上使用SELECT date, COALESCE(SUM(i.total_in), 0) AS `total income` FROM ( SELECT ADDDATE(('2017-01-01'),ROW-1) AS date FROM ( SELECT @row := @row + 1 AS ROW FROM (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t,(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t2, (SELECT @row:=0) r ) n WHERE n.row <= ( SELECT DATEDIFF(MAX(LAST_DAY('2017-01-01')), MIN('2017-01-01')) FROM `income`)+ 1) dt LEFT JOIN `income` i ON dt.date = i.`date_income`GROUP BY dt.date; 是最自然的方法。

答案 1 :(得分:1)

伪sysfs文件系统(/sys)旨在实现此目的(将内核数据公开给用户空间)。您也可以从用户空间写入这些数据结构。

查看Greg Kroah-Hartman's Driver Tutorial

阅读SysFS Documentation