首先,我是一名设备驱动程序人员。这是我第一次处理用户模式程序。
我曾经有一个中断服务程序来响应硬件中断。
换句话说,硬件使用中断服务程序来通知驱动程序进行服务。
我现在使用 ioctl 作为应用程序和设备驱动程序之间通信的通道,并轮询它以等待响应。
设备驱动程序在完成某些任务时是否有其他方法可以通知应用程序?
欢迎任何评论。
谢谢,
有几种机制可以实现这一点。第一种方法:用户空间应用程序poll() http://linux.die.net/man/2/poll or select() http://linux.die.net/man/2/select系统调用,等待来自内核的某些事件。第二种方法是使用网络链接套接字 http://en.wikipedia.org/wiki/Netlink。还有其他类似的mmap()
或信号。谷歌通过kernel user-space IPC
您将看到整个列表。
至于你的情况(驱动程序开发),我会说采用下一种方法。在驱动程序中创建 sysfs 文件,然后执行sysfs_notify() http://lxr.free-electrons.com/source/fs/sysfs/file.c#L165(有可能wait_for_completion_interruptible_timeout()
或类似的东西)。在用户空间做select() http://linux.die.net/man/2/select驱动程序 sysfs 文件的系统调用。怎么看从用户空间安装的线路规则 http://lxr.free-electrons.com/source/drivers/misc/ti-st/st_kim.c#L494例如。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)