1
我是内核模块的新手。使用等待队列,我阻塞线程,直到缓冲区有数据。使用hrtimer
,我定期唤醒队列。现在,问题是我删除了内核模块后,我看到"thread1"
进程仍在运行。我认为问题在于等待队列正在等待,并且进程在这里被阻塞。请帮助我如何在删除我的模块时杀死等待队列。 内核线程为内等待如何杀死内核模块中的等待队列?
void thread1(void)
{
while (thread_running) {
...
wait_event_interruptible(wait_queue, does_buffer_have_data());
...
}
}
你的问题记得我[WinAPI问题](http://stackoverflow.com/questions/10866311/getmessage-with-a-timeout)。在完成内核模块之前,应该将'thread_running'设置为false,并且_join_ ** thread1 **等待您的计时器唤醒队列并且线程能够结束。 – Youka
通过“线程”,我不确定您是指的是某个用户进程或正在使用您的内核模块的线程,还是您指的是您的模块创建的内核线程。 –
@Ian Abbott:我指的是我的模块创建的内核线程。 – Karthik