我在内核中有一个模块,在特定事件/计数中我想要唤醒一个用户线程,它将通过proc fs从内核模块中读取一些数据。
我正在尝试将内核模块的RT信号发送到处于休眠状态的用户线程。该信号将调用其处理程序,并将进一步从内核读取数据/缓冲区并将其存储到文件中。
我使用这种方法面临一些未知问题,在发送信号后系统被绞死并且一切都停止了。
请告诉我是否使用正确的方法(使用信号)从内核模块触发用户线程。如果它是正确的那么可能是锁定问题的根本原因。
是否有任何可以用来实现此类功能的击球方式......请建议/帮助。
KERNEL MODULE:
loadView
PS :我从中断上下文中调用此函数。
答案 0 :(得分:1)
另一种方法是通过内核模块创建设备文件。在驱动程序放入数据之前,将阻止从此文件读取。在这种情况下,用户空间应用程序可以打开和读取设备文件数据,而不会发出任何睡眠和捕获信号。
更新: Here您可以找到创建只读设备文件的示例。您应该在hello_read_proc()
中添加等待逻辑,这将生成用于读取的块。