cleanup_module Linux 内核
我在我正在处理的内核模块中定义了一个等待队列:
static DECLARE_WAIT_QUEUE_HEAD(WaitQ);
在 init_module() 例程中,我创建了一个新的内核线程,每隔几秒就打印到控制台。
在我的 cleanup_module
中,我设置了一个变量来告诉线程终止,然后将 sleep_on(&WaitQ)
作为 cleanup_module
中的最后一行。然后在线程例程中,当cleanup_module
中设置的变量为true时,调用wake_up(&WaitQ)
,然后complete_and_exit
终止线程。
我的问题是。当 sleep_on(&WaitQ) 被调用时,添加到 WaitQ 中的内容。是整个模块还是在 init_module 中启动的线程?
I have a wait queue defined in a kernel module I am working on:
static DECLARE_WAIT_QUEUE_HEAD(WaitQ);
in the init_module()
routine I create a new kernel thread which prints to the console every few seconds.
In my cleanup_module
I set a variable which tells the thread to terminate and then have sleep_on(&WaitQ)
as the last line in cleanup_module
. Then in the thread routine wake_up(&WaitQ)
is called when the variable set in cleanup_module
is true, and then complete_and_exit
to terminate the thread.
My question is. when sleep_on(&WaitQ) is called what is addded to the WaitQ. Is it the module as a whole or is it the thread started in the init_module?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
两者都不是 - 添加到队列中的是导致模块删除的“rmmod”处理器的线程(任务)。
Neither - what is added to the queue is the thread (task) of the "rmmod" processor that caused the module removal.