如何从用户空间与Linux内核模块通信而不会乱丢/ dev新节点?

Ins*_*ges 10 linux linux-device-driver linux-kernel

从用户空间与内核模块通信的方式有哪些?通过通信,我的意思是在内核模块和用户空间进程之间发送信息和命令.

我目前知道两种方式:

  1. 已发布设备节点上的打开/关闭/读取/写入/ ioctl.
  2. 读/导出和挂钩/ proc文件.

更具体地说,有人可以建议与内核模块进行通信的最佳方式,该内核模块实际上并不驱动任何硬件,因此不应该使用仅针对ioctl调用存在的存根节点乱丢/ dev吗?我主要需要检查其各种状态变量,并向其发送带有请求类型标记的数据块,并查看请求是否成功.

Unc*_*eiv 8

还有/ sys文件系统(sysfs):

Sysfs将有关设备和驱动程序的信息从内核设备模型导出到用户空间,也用于配置.

(来自维基百科)


fil*_*fel 8

Netlink套接字也是为满足这种要求而设计的......

另见