linux中断为什么不能进入休眠
2个回答
展开全部
至于中断为什么不能进入休眠,今天再网上查阅并总结了一下:
中断处理的时候,不应该发生进程切换,因为在中断上下文中,唯一能打断当前中断handler的只有更高优先级的中断,
它不会被进程打断(这点对于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断上下文中休眠,则
没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断上下文中,没有进程的概念,没有相应的
task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了会导致阻塞的例程,内核几乎肯定会死.
中断处理的时候,不应该发生进程切换,因为在中断上下文中,唯一能打断当前中断handler的只有更高优先级的中断,
它不会被进程打断(这点对于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断上下文中休眠,则
没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断上下文中,没有进程的概念,没有相应的
task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了会导致阻塞的例程,内核几乎肯定会死.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询