从哪里开始使用Linux内核模块?

the*_*ive 5 c linux linux-kernel

有点背景,我是一名CMPE学生,现在是一个操作系统课程.我有一些C编码的基本知识,但对C++更熟悉(花了大约3个学期).除此之外,从未接受任何其他正式的编码培训.另外,我对linux环境有了基本的了解.

我正在开发一个项目,要求我和我的团队编写一个可以执行以下操作的Linux内核模块:

  • 通过将接收到的数据打印到内核日志来回显从用户级进程传递的数据
  • 能够将数据从一个用户进程传递到另一个用户进程.
  • 必须能够将内核模块用作进程间通信抽象.模块应该提供发送方向其发布数据但没有接收方正在等待的情况.模块必须覆盖接收方要求数据但没有可用数据的情况.
  • 模块必须涵盖接收器要求数据但没有可用数据的情况.
  • 必须是模块中缓冲区容量的限制.

现在我不知道那些有编程背景的人看起来有多困难,但对于我这个职位的人来说,这似乎是一项不可思议的复杂任务.

这是我到目前为止所做的:

  1. 成功编写,编译,插入和删除基本的"hello world"linux内核模块
  2. 阅读"Linux内核模块编程指南"的前4或5章
  3. 阅读一些stackoverflow帖子,其中任何一个似乎都无法将我引导到我需要去的地方.

所以最后这是我的问题:有人可以指点我需要的方向吗?我甚至不知道在哪里找到用于读取用户级过程数据的命令,我需要某个地方来启动我.TLPD非常适合洞察这个主题但是没有帮助我达到一个可行的项目可以上交的地步.在过去,我会学习阅读源代码和逆向工程,我能在任何地方学习找到类似的东西?任何和所有的帮助表示赞赏.

-将

Mic*_*ael 4

我发现《Linux 内核模块编程指南》是一个非常好的资源。从它的声音来看,像字符设备之类的东西可能最适合您的目的,但我不确定您是否还有其他限制。

我可能考虑的另一个方向(尽管这可能是一条糟糕的道路)是查看 Linux 内核中具有类似功能的内核模块的示例。我暂时没有很好的例子,但也许可以看一下/drivers/char/