是否可以扩展Linux中的ioctl接口,以便用户空间应用程序可以将指向函数的指针发送到内核空间驱动程序?
我特别考虑以用户可控的方式处理流但在内核中进行的方法。这些操作可以附加到内核模块,但这将使开发变得更加容易,因为我不需要在开发过程中弄乱内核。
更具体地说,这将是一个过程:
- 数据由驱动程序读取到缓冲区。
- 数据由这些用户定义的函数就地处理。
- 还进行了更多处理,可能使用一些硬件块。
- 数据由用户空间应用程序使用。
我认为您可以通过让驱动程序提供用户空间应用程序打开的一个或多个字符设备(或块设备)来实现您想要的目的。
然后你可以使用inotify (Linux 期刊文章) 用于内核->用户空间事件通信。 Ioctl 或写入设备以进行用户空间->内核事件通信。数据交换也可以通过读/写一个或多个设备文件来实现。
或者,您可以提供 /proc 或 /sys 文件系统条目或使用 netlink。
您也可以考虑ksocket:
Ksocket是linux 2.6内核模块
提供bsd风格的socket
接口(即套接字、绑定、
倾听、联系、接受……)
内核开发人员以方便他们
Linux内核中的网络编程
空间。
ksocket 提供的接口与其等效接口非常相似
在 glibc 中,所以即使是新开发人员
内核空间将没有障碍
开发内核网络相关
程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)