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

问题描述 投票:1回答:1

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

c linux linux-kernel driver linux-device-driver
1个回答
2
投票

正如in other questions所解释的那样,当你已经获得了一些锁(在一个关键部分内)时,你在上下文中调用wait_event_timeout。在这一点上,您的进程可能会与其他进程发生死锁,并且调度程序会抱怨它。请查看您调用wait_event_timeout的位置,并检查I / O是否在正确的位置执行,以及在将进程发送到睡眠状态之前是否已解锁所有同步原语。

© www.soinside.com 2019 - 2024. All rights reserved.