Linux kernel 多队列和工作队列

Linux kernel 多队列和工作队列,linux-kernel,interrupt-handling,Linux Kernel,Interrupt Handling,我正在学习在linux内核中编写下半部分代码的工作队列。 我想知道:如果中断处理程序被执行两次(因此调用schedule\u work两次),那么工作队列处理程序会被调用一次还是两次 您的答案似乎在函数的注释中 /** * schedule_work - put work task in global workqueue * @work: job to be done * * Returns zero if @work was already on the kernel-global w

我正在学习在linux内核中编写下半部分代码的工作队列。
我想知道:如果中断处理程序被执行两次(因此调用
schedule\u work
两次),那么工作队列处理程序会被调用一次还是两次

您的答案似乎在函数的注释中

/**
 * schedule_work - put work task in global workqueue
 * @work: job to be done
 *
 * Returns zero if @work was already on the kernel-global workqueue and
 * non-zero otherwise.
 *
 * This puts a job in the kernel-global workqueue if it was not already
 * queued and leaves it in the same position on the kernel-global
 * workqueue otherwise.
 */
int schedule_work(struct work_struct *work)
{
        return queue_work(keventd_wq, work);
}