Linux 请求irq和请求irq的区别是什么?

Linux 请求irq和请求irq的区别是什么?,linux,linux-kernel,kernel,embedded,interrupt,Linux,Linux Kernel,Kernel,Embedded,Interrupt,我知道通过请求\u irq我们可以安排一个工作队列,在这个队列中,通过请求\u线程\u irq我们可以生成一个kthread作为中断的下半部分。 但workqueue和kthread不是差不多吗? 请求线程irq如何比请求irq具有更好的延迟 这是一个实时内核线程,优先级为50 static const struct sched_param param = { .sched_priority = MAX_USER_RT_PRIO/2, }; t = kt

我知道通过请求\u irq我们可以安排一个工作队列,在这个队列中,通过请求\u线程\u irq我们可以生成一个kthread作为中断的下半部分。 但workqueue和kthread不是差不多吗?
请求线程irq如何比请求irq具有更好的延迟

这是一个实时内核线程,优先级为50

    static const struct sched_param param = {
        .sched_priority = MAX_USER_RT_PRIO/2,
    };

    t = kthread_create(irq_thread, new, "irq/%d-%s", irq,new->name);
    if (IS_ERR(t)) {
        ret = PTR_ERR(t);
        goto out_mput;
    }

    sched_setscheduler_nocheck(t, SCHED_FIFO, &param);

这是一个实时内核线程,优先级为50

    static const struct sched_param param = {
        .sched_priority = MAX_USER_RT_PRIO/2,
    };

    t = kthread_create(irq_thread, new, "irq/%d-%s", irq,new->name);
    if (IS_ERR(t)) {
        ret = PTR_ERR(t);
        goto out_mput;
    }

    sched_setscheduler_nocheck(t, SCHED_FIFO, &param);

这个问题不容易回答。你读过关于软IRQ处理程序的任何文章吗?作为一个凝视者。更多的是关于你的主题。回答了你的问题吗?我已经多次浏览了上述链接(全部三个),但这些链接并没有给出令人满意的解释,为什么kthread比workqueue更好?他们说的只是quick_check处理程序,我理解,但没有说延迟是如何改善的。这不是一个容易回答的问题。你读过关于软IRQ处理程序的任何文章吗?作为一个凝视者。更多的是关于你的主题。回答了你的问题吗?我已经多次浏览了上述链接(全部三个),但这些链接并没有给出令人满意的解释,为什么kthread比workqueue更好?他们说的只是quick_check处理程序,我理解,但没有说延迟是如何改善的