繁体   English   中英

在Linux内核空间中进行读写

[英]Reading/writing in Linux kernel space

我想在Linux内核中添加函数以写入和读取数据。 但是我不知道如何/在哪里存储它,以便其他程序可以读取/覆盖/删除它。

程序A调用uf_obj_add(param, param, param)它将信息存储在内存中。
程序B执行相同的操作。
程序C调用uf_obj_get(param) ,内核检查是否允许操作,如果允许,则返回数据。

我只需要malloc()内存还是更困难?
以及uf_obj_get()如何访问uf_obj_add()写入的内存?
在哪里存储内存位置信息,以便两个功能都可以访问相同的数据?

正如评论员对您的问题所指出的那样,在用户空间中实现此目标可能会更加安全。 但是,如果您坚持要通过修改内核代码来实现这一目标,则可以采用的一种方法是实现新的设备驱动程序,该驱动程序具有诸如读写之类的功能,可以根据需要实现这些功能,以使进程访问某些内存您所描述的空间。 如您所描述的,您的进程然后可以通过或多或少地在同一空间中读取和写入相同的空间来工作,就像它们正在读取/写入常规文件一样。

不过,我建议您在深入内核代码之前先阅读大量的材料。 设备驱动程序上的一个很好的资源是Linux设备驱动程序 即使其中很大一部分信息不是最新的,您也可以在此处找到移植到linux 3.x的书中使用的源代码版本。 您可以在scull目录下找到所需内容。

同样,正如评论员对您的问题所指出的那样,我认为您不应该直接进入内核空间。 但是,出于教育目的,scull可能是阅读内核代码并查看如何实现与您所描述的结果类似的良好起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM