在Linux内核模块(驱动程序)关键部分等待用户空间输入

时间:2018-09-05 13:01:41

标签: c linux linux-kernel driver linux-device-driver

我是内核编程的新手,我正在Linux驱动程序中进行更改。我想在关键部分中阻止/等待用户输入(驱动程序与用户空间应用程序工作之间的通信)。问题是,当我使用wait_event_timeout()时,系统崩溃了,我越来越 BUG: scheduling while atomic: swapper。  有谁知道如何解决这个问题,可以给我一些建议从哪里开始?

1 个答案:

答案 0 :(得分:2)

in other questions所述,当您已获取一些锁(在关键部分内)时,您正在上下文中调用wait_event_timeout。在这一点上,您的进程可能会与其他进程陷入僵局,并且调度程序会对此抱怨。请检查调用wait_event_timeout的位置,并检查I / O是否在正确的位置执行,以及是否已解锁所有同步原语,然后再使进程进入睡眠状态。