我做了一些实验,发现每当我关闭内核模块中的本地中断时,系统就会立即挂起,甚至不响应键盘中断。(系统有4个CPU,操作系统是ubuntu 11.10)关闭本地中断应该只是禁用一个CPU(我猜),但我仍然有3个空闲CPU。(困惑)。
与禁用本地中断类似,当我在内核模块中禁用抢占(preempt_disable)时,系统也不再响应我。当我用以下代码更改一个内核模块中的代码时
for(;;)
{
preempt_disable();
/* ---did some thing fast here--- */
preempt_enable()
}
Run Code Online (Sandbox Code Playgroud)
系统一开始对我做出响应,但是当我随后打开另一个控制台或执行其他操作时,系统完全挂起。