线程IRQ中的线程函数是否在原子上下文中运行?

时间:2017-06-27 17:44:24

标签: linux-kernel linux-device-driver interrupt-handling

我已经注册了一个线程中断处理程序,如下所示:

ret = devm_request_threaded_irq(dev,
                    data->irq,
                    &abc_handle_irq,
                    &abc_thread_irq,
                    IRQF_SHARED,
                    DEVICE_NAME,
                    (void *)pdev);

abc_thread_irq()是线程函数,在此机制中充当下半部分。此线程与进程上下文共享资源,因此需要锁定。现在问题1.这个锁是否可以是mutex_lock()(struct mutex lock),或者它必须使用spin_lock_bh()。我正在研究一个使用mutex_lock的代码,在我看来这是不行的,因为它可以让BH进入睡眠状态,如果BH线程在原子上下文中运行,那么反过来会引起内核恐慌。线程中断机制对我来说是新的,所以需要帮助。

感谢。

0 个答案:

没有答案