6

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

我正在做一个项目,该项目需要我和我的团队编写一个可以执行以下操作的 linux 内核模块:

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

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

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

  1. 成功编码、编译、插入和删除基本的“hello world”linux内核模块
  2. 通读Linux 内核模块编程指南的前 4 或 5 章
  3. 阅读一些 stackoverflow 帖子,似乎没有一个能够将我引导到我需要去的地方。

所以最后这是我的问题:有人可以指出我需要这样做的方向吗?我什至不知道在哪里可以找到用于读取用户级进程数据的命令,我需要在某个地方开始。TLPD 非常适合深入了解该主题,但并没有帮助我达到我将有一个可行的项目上交的地步。过去,我会通过阅读源代码和逆向工程来学习,有没有我可以的地方找到类似的东西?任何和所有的帮助表示赞赏。

-将要

4

2 回答 2

4

我发现 Linux Kernel Module Programming Guide 是一个很好的资源。从它的声音来看,像字符设备这样的东西可能最适合您的目的,但我不确定您是否有其他限制。

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

于 2013-10-29T19:50:55.613 回答
4

您描述的内容与pipe几乎相同。

阅读Linux 设备驱动程序的第三章。(但不要只是复制scull pipe 的例子……)

于 2013-10-30T09:02:33.333 回答