我可以设置工作队列的优先级吗?
我正在修改 SPI 内核模块“spidev”,以便它可以更快地与我的硬件通信。外部硬件是一个带有非常小的缓冲区的 CAN 控制器,因此我必须快速读取任何传入数据以避免丢失数据。我已经配置了一个 GPIO 中断来通知我新数据,但我无法在中断处理程序中读取 SPI 硬件。我的中断处理程序基本上设置了一个将读取 SPI 数据的工作队列。当内核中只有一个活动进程时,它可以正常工作。一旦我同时打开任何其他进程(甚至是进程查看器顶部),我就会开始丢失成串的数据,也就是说,我可能会毫无问题地收到 1000 个数据包,然后连续丢失 15 个数据包,依此类推. 我怀疑我的问题的原因是当其他进程(顶部,在这种情况下)可以控制中断处理程序运行的 cpu,但工作队列中的工作直到再次调用调度程序才开始。我试图提高我的流程的优先级,但没有成功。
我想知道是否有办法告诉内核在中断处理函数之后立即执行工作队列中的工作。欢迎提出建议。