是否有任何(肮脏的(方法可以在特定 ISR 之后引发上下文切换到特定进程?
在正常情况下,在 ISR 之后,中断的进程将继续运行,我必须等待调度程序选择该特定进程。我想在 ISR 之后立即切换到特定流程。
任何建议都会很棒。谢谢!
构造驱动程序,以便进程在合适的系统调用(read()
,ioctl()
(上具有线程阻塞,ISR唤醒该线程(因为至少有一个字节可用于read()
(。
然后,确保线程具有尽可能高的优先级,并且最好使用实时调度程序(SCHED_FIFO
或SCHED_RR
(。实际上,如果您的进程未以 root 权限运行,则需要以 root 权限启动服务,设置线程,然后删除权限;或通过以下方式提供二进制可执行文件CAP_SYS_NICE
功能,例如setcap pe=CAP_SYS_NICE binary
.
从技术上讲,司机也有可能弄乱日程安排,但我不会这样做。 任何时间紧迫的事情都应该在内核 ISR 中完成。
如果你想在用户空间中做到这一点,因为你不希望你的代码是内核的衍生品,因此是GPL许可的,那么你只能靠自己了。