在Linux内核空间中读/写

时间:2016-03-02 12:30:25

标签: c linux-kernel read-write

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

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

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

1 个答案:

答案 0 :(得分:0)

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

我建议在深入研究内核代码之前阅读相当多的资料。设备驱动程序的良好资源是Linux Device Drivers。尽管其中很大一部分信息可能不是最新的,但您可能会发现here本书中使用的源代码版本已移植到linux 3.x.您可以在scull目录下找到您要查找的内容。

同样,正如评论员对你的问题的指出,我认为你不应该直接使用内核空间。但是,出于教育目的,scull可以作为阅读内核代码的良好起点,并且可以看到结果与您所描述的结果类似。