gpt4 book ai didi

linux - 如何停止 init_module : linux kernel

转载 作者:IT王子 更新时间:2023-10-29 01:14:56 25 4
gpt4 key购买 nike

我有一个如下所示的程序。

test_module.c:

#include <linux/version.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/delay.h>

int init_module(void)
{
while(1) {
pr_info("hello 4 sec\n");
msleep(4 * 1000);
}
return 0;
}

void cleanup_module(void)
{
pr_info("module removed successful\n");
}

当我加载这个模块时,我的终端变得卡住/阻塞。如何停止这个程序。我尝试了 sudo rmmod test_module,但没有用。所以我重新启动了我的系统。如何破坏 init_module?将来,如果出现问题并且我的 init_module 没有结束,那该怎么办?如果我们不停止 init_module 会发生什么?

最佳答案

通过重启机器。

这是唯一的办法。用户态进程是隔离的,可以强制终止等等,但在内核中没有这样的保护。

init_module 函数不应在较长时间内执行任何操作。它应该只将模块注册到适当的数据结构。

如果你需要在内核中定期做一些事情,你需要安排一个 tasklet or worqueue或者创建一个 kernel thread .另见 When to use kernel threads vs workqueues in the linux kernel .但是大多数内核代码实际上应该只是在某个地方注册并在适当的事件(来自硬件或通过系统调用从用户空间)发生时运行。

关于linux - 如何停止 init_module : linux kernel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com