C 在Linux内核模块(驱动程序)关键部分等待用户空间输入
我是内核编程新手,在Linux驱动程序中做了一些更改。我想在用户输入的关键部分阻塞/等待(驱动程序和用户空间应用程序之间的通信)。问题是,当我使用wait\u event\u timeout()时,系统正在崩溃,而我正在恢复C 在Linux内核模块(驱动程序)关键部分等待用户空间输入,c,linux,linux-kernel,driver,linux-device-driver,C,Linux,Linux Kernel,Driver,Linux Device Driver,我是内核编程新手,在Linux驱动程序中做了一些更改。我想在用户输入的关键部分阻塞/等待(驱动程序和用户空间应用程序之间的通信)。问题是,当我使用wait\u event\u timeout()时,系统正在崩溃,而我正在恢复 BUG:scheduling while-atomic:swapper。 有谁知道如何解决这个问题,能给我一些建议从哪里开始吗 如前所述,当您已经获取了一些锁(在关键部分内)时,您正在上下文中调用wait\u event\u timeout。在这一点上,您的进程可能会与其他
BUG:scheduling while-atomic:swapper
。
有谁知道如何解决这个问题,能给我一些建议从哪里开始吗 如前所述,当您已经获取了一些锁(在关键部分内)时,您正在上下文中调用wait\u event\u timeout。在这一点上,您的进程可能会与其他进程发生死锁,调度器会对此进行投诉。请查看调用wait\u event\u timeout的点,并检查I/O是否在正确的位置执行,以及在将进程发送到睡眠之前是否已解锁所有同步原语。您不能在关键部分等待用户输入。这是一个错误。您希望如何获取“用户输入”?您如何进入关键部分?关键部分仅用于原子操作,不用于通过netlink套接字获取用户输入的I/OI。我编写了一个回调函数,用于接收drv_init文件中不在关键部分的MSG。我想在关键部分阻塞/等待,直到调用回调函数。是的-你的设计被破坏了:(