Linux工作队列如何工作?

时间:2012-12-28 13:35:08

标签: linux-kernel linux-device-driver

我是Linux设备驱动程序的新手,我正在尝试制作一个处理UART芯片的设备驱动程序。为此我决定使用work ques作为我的下半部分处理,因为在处理从UART芯片获得的数据时我必须使用一些信号量。 先前在中断中调度的工作队列处理程序现在被执行,并且在执行期间它将在信号量处休眠。在此期间,再次调用中断处理程序并调度相同的工作队列处理程序。工作队列处理程序是否会在第一次执行完成之前再次执行?

感谢。

1 个答案:

答案 0 :(得分:0)

工作队列的默认行为是允许在不同的CPU上并发执行。有一个标志WQ_NON_REENTRANT可以改变这种行为。有关详细信息,请参阅此帖http://lwn.net/Articles/403891/

但似乎在最近的内核中,工作队列默认是不可重入的 - 请参阅 http://lwn.net/Articles/511190