【问题标题】:Replacement for sys/socket.h in linux kernel module?在 linux 内核模块中替换 sys/socket.h?
【发布时间】:2016-07-13 19:10:00
【问题描述】:

IBM 有一个 TPM 2.0 模拟器,它通过套接字进行通信。我必须在特定端口连接到本地主机,然后通过该连接发送我的命令。

不过,我希望能够像使用硬件 TPM 一样使用它。所以我想我会写一个内核模块,在/dev/tpm0下为此提供一个字符设备驱动程序。

它基本上是一个代理,它将接收到的所有命令发送到模拟器并转发答案。

我需要sockets 来完成这项任务,并且已经使用我编写的用户模式应用程序成功连接到模拟器。

不过,当将它传输到我编写的驱动程序时,make 文件抱怨说找不到 sys/socket.h

通过我已经听说的研究,有些库只能在用户模式下使用,我认为sys/socket.h 就是其中之一。

那么它的内核替换是什么?我阅读了很多文章,解释了如何在内核模块中配置服务器,但没有在客户端上。

【问题讨论】:

  • 无需编写内核模块。您可以使用socat 命令,例如here 所述。
  • @hek2mgl 你能详细说明一下吗?

标签: c linux sockets linux-kernel kernel-module


【解决方案1】:

这应该会有所帮助:

在内核中运行的示例 tcp 服务器:

https://gist.github.com/llj098/752417

【讨论】:

  • 我也发现了这个。但它使用的是旧的struct msghdr 接口。 msg_iov 成员在内核> 3.19 中不再使用,我认为。
猜你喜欢
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2013-12-17
  • 2018-12-24
  • 1970-01-01
  • 2023-03-22
  • 2019-11-10
相关资源
最近更新 更多