0

在特定 ISR 之后,是否有任何(肮脏的)方法可以引发上下文切换到特定进程?

在正常情况下,在 ISR 之后,被中断的进程将继续运行,我必须等待调度程序选择该特定进程。我想在 ISR 之后立即切换到具体流程。

任何建议都会很棒。谢谢!

4

1 回答 1

2

构造您的驱动程序,以便进程在合适的系统调用 ( read(), ioctl()) 上有一个线程阻塞,同时 ISR 唤醒该线程(因为至少有一个字节可用于read())。

然后,确保线程具有尽可能高的优先级,并且最好使用实时调度程序(SCHED_FIFOSCHED_RR)。在实践中,如果您的进程没有以 root 权限运行,您需要以 root 权限启动服务,设置线程,然后删除权限;CAP_SYS_NICE或通过例如提供二进制可执行功能setcap pe=CAP_SYS_NICE binary

从技术上讲,司机也有可能扰乱日程安排,但我不会那样做。任何时间紧迫的事情都应该在内核 ISR 中完成。

如果您想在用户空间中执行此操作,因为您不希望您的代码是内核的派生产品并因此获得 GPL 许可,那么您只能靠自己了。

于 2018-05-13T10:51:06.527 回答