例如,我的内核模块中有一个缓冲区,其数据将由用户空间程序使用.如果消耗了所有数据,则内核模块必须在新数据到达时通知我的程序.
这是生产者/消费者的典型问题.生产者是内核模块,消费者是用户空间程序.
今天,我向我的程序(事件)发送一个信号,并使用ioctl函数访问数据缓冲区.但我不知道这种方法是否足以解决这类问题.我害怕不必要地使用netlink或内存映射来解决这个问题.
解决方法 阅读其他一些你想要的模块.在Linux内核中有很多选项可供选择,包括:
>虚拟文件系统,例如/ proc,/ sys,configfs,relayfs(真的看看relayfs)
> netlink
>阻止系统调用
> poll()/ epoll()&有关
/ proc可能是最简单的开始,因为它已经存在并且有大量关于如何使用它的文档.创建一个映射到缓冲区的虚拟文件,然后让用户空间应用程序打开fd并使用select.简单而无处不在.有更多的现代和“更好”的方式 – 它们将不可避免地用/ proc select()来描述,所以先学习那些将教你一些有用的东西.
总结以上是内存溢出为你收集整理的使用用户空间程序传递内核模块的最佳方法是什么?全部内容,希望文章能够帮你解决使用用户空间程序传递内核模块的最佳方法是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)