linux – 内核如何通知用户空间程序发生中断
发布时间:2020-12-13 22:49:28 所属栏目:Linux 来源:网络整理
导读:我正在编写用户空间程序和内核空间设备驱动程序. 目标:一旦发生中断,用户空间程序需要快速执行某些操作. 我的天真方法:用户空间程序使用ioctl调用wait_event_interruptible(),内核ISR调用wake_up_interruptible()来唤醒用户空间程序.事实证明,从中断到用户
我正在编写用户空间程序和内核空间设备驱动程序.
目标:一旦发生中断,用户空间程序需要快速执行某些操作. 我的天真方法:用户空间程序使用ioctl调用wait_event_interruptible(),内核ISR调用wake_up_interruptible()来唤醒用户空间程序.事实证明,从中断到用户空间需要花费太多时间. 有没有更好的方法? 谢谢! 解决方法
这里有一个类似的问题:
Notify gpio interrupt to user space from a kernel module 请检查以上问题.但是,我可以提供我在那里建议的方法. 您可以从内核API向用户空间线程发送信号,这可以帮助您运行非阻塞: send_sig(int sig,struct task_struct *p,int priv); 你需要知道内核中用户线程的pid.您可以通过/ proc编写用户进程的pid然后读取pid的内核来实现此目的.通过这种安排,当存在中断时,内核可以向用户线程发送信号.如果您的进程重新启动或被杀死,您将必须通过proc更新pid.仅用于状态通知,您可以使用此方法;但是如果你想传输数据和状态比Netlink或char驱动程序机制是好方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |