【发布时间】:2012-10-15 15:36:35
【问题描述】:
我正在编写一个用户空间程序和一个内核空间设备驱动程序。
目标:一旦发生中断,用户空间程序需要快速做某事。
我的幼稚方法:用户空间程序使用ioctl调用wait_event_interruptible(),内核ISR调用wake_up_interruptible()唤醒用户空间程序。事实证明,从中断到用户空间的时间太长了。
有没有更好的办法?
谢谢!
【问题讨论】:
-
你有没有使用
nice来提高程序的优先级? -
我正在使用 uClinux。没有“好”的命令。但是,我确实尝试使用 sched_get_priority_max();sched_setscheduler();在我的用户空间程序中,但它并没有真正帮助。 :(
-
busybox有nice、renice和chpst。如果启用了这些小程序中的任何一个,您可以使用它们以不同的优先级运行您的用户空间程序。它是否以 root 身份运行(只有超级用户可以提高优先级)? -
我会在内核驱动程序中使用一个专用的字符设备来向应用程序发送信号(应该
poll(2)那个设备)。 -
谢谢 Ben,我刚刚在busybox 中找到了“不错”的选项。我稍后试试!