bin*_*inW 7 kernel-module linux-device-driver linux-kernel
我是Linux内核模块编程的新手.从我到目前为止阅读的材料中,我发现用户程序有3种方式来请求服务或与Linux内核模块通信
问题:我们还有哪些其他选项可用于用户程序和Linux内核模块之间的通信?
您的选项3)实际上是选项1)的子选项 - ioctl()是与设备文件交互的一种方式(read()并且write()是通常的方式).
另外两个值得考虑的方法是:
sysfs文件系统;基本上,许多标准IPC机制 - 参见 http://en.wikipedia.org/wiki/Inter-process_communication - 可以使用:
文件和内存映射文件:设备文件(如上所述)或/ dev,procfs,sysfs,debugfs或您自己的文件系统中的类似特殊文件,具有读/写,ioctl,mmap的笛卡尔积
可能是信号(用于kthread)
套接字:使用选择的协议:TCP,UDP(参见knfsd,但可能不太容易),PF_LOCAL或Netlink(许多子接口 - 基本netlink,genetlink,Connector,...)
此外,
4. 系统调用(虽然模块不是真的可用)
5. 网络接口(类似于tun).
Netlink的工作示例 - 仅举几例 - 可以在例如中找到
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |