0

我开发了一个内核模块,它完成了一项繁重的工作,当然这需要时间。问题是模块使用 CPU 超过 20 秒,因此引发了 softlockup_threshold 的 BUG。

我的问题是,有没有办法绕过这个?即它可以篡改阈值吗?或者它可以强制调度并稍后继续其工作?(为了将定时器设置为 0)。

提前谢谢你,帕诺斯

4

2 回答 2

3

使用新内核,您可以调整 /proc/sys/kernel/watchdog_thresh(我认为旧内核使用 /proc/sys/kernel/softlockup_thresh)。但不鼓励这样做,因为阻塞 20 秒意味着你的代码有问题,你应该让出 CPU,例如通过调用 cond_resched()。

于 2012-11-14T02:12:52.490 回答
1

您可以尝试让 CPU 一段时间,如果可以接受,那么您应该查看schedule()Theres a great article here about Sleeping in the Kernel

于 2012-11-13T20:46:11.630 回答