Linux kernel Linux工作队列是如何工作的?

Linux kernel Linux工作队列是如何工作的?,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,我是Linux设备驱动程序的新手,我正在尝试制作一个处理UART芯片的设备驱动程序。为此,我决定使用WorkQues作为下半部分处理,因为在处理从UART芯片获取的数据时,我必须使用一些信号量。 先前在中断中计划的工作队列处理程序现在将被执行,并且在执行期间它将在信号量处休眠。在此期间,将再次调用中断处理程序,并安排相同的工作队列处理程序。工作队列处理程序是否会在第一次执行完成之前再次执行 谢谢。工作队列的默认行为是允许在不同的CPU上并发执行。有一个标志WQ_NON_REENTRANT可更改此

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


谢谢。

工作队列的默认行为是允许在不同的CPU上并发执行。有一个标志WQ_NON_REENTRANT可更改此行为。更多信息可以在这篇文章中找到

但在最近的内核中,工作队列在默认情况下是不可重入的——请参阅