cleanup_module Linux 内核

发布于 2024-12-11 21:20:54 字数 488 浏览 0 评论 0原文

我在我正在处理的内核模块中定义了一个等待队列:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野侃 2024-12-18 21:20:54

两者都不是 - 添加到队列中的是导致模块删除的“rmmod”处理器的线程(任务)。

Neither - what is added to the queue is the thread (task) of the "rmmod" processor that caused the module removal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文