我有一个无限的循环,不知何故它停止了。
代码:的
struct task_struct *thread;
static int __ubut thread_init(void)
{
thread = thread_run(kernel_thread_function, NULL, "my_thread");
return 0;
}
int kernel_thread_function(void *t)
{
while(1)
printk("hello world");
return 0;
}
static void __exit thread_exit(void)
{
kthread_stop(thread);
}
输出:
你好世界......你好世界
*突然停止*
在innit.
内正确创建线程如果我用计数器运行我的while循环,它将一直运行直到计数器完成,但是如果我运行它while(1)
它会很快死掉。我猜内核正在杀死我的循环,但是当我运行命令ps
时我的线程保持活动状态,我看到所有进程仍在运行。
我尝试使用msleep_interruptible(2000);
像其他帖子那样建议,但它并没有解决我的问题。
那么如何让内核不能阻止我的无限循环呢?是的,它必须永远运行。