关中断,睡眠

发布时间:2014-10-22 13:40:59编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"关中断,睡眠",主要涉及到关中断,睡眠方面的内容,对于关中断,睡眠感兴趣的同学可以参考一下。

 睡眠函数里  spin_lock_irqsave(&q->lock,flags);  先关了中断然后就  schedule()了,    schedule()里是打开所有中断void interruptible_sleep_on(wait_queue_head_t *q){    unsigned long flags;                wait_queue_t wait;                init_waitqueue_entry(&wait, current);    current->state = TASK_INTERRUPTIBLE;    spin_lock_irqsave(&q->lock,flags);            __add_wait_queue(q, &wait);                spin_unlock(&q->lock);    schedule();    spin_lock_irq(&q->lock);                    __remove_wait_queue(q, &wait);  CU上一个帖子:凡是可能睡眠的函数都不能在中断环境中调用,那么这些函数是否可以在关中断的情况下调用呢?在关中断的条件下,是可以睡眠的,但是这会导致系统状态不正确,因为在shedule函数中,会无条件地打开所有的中断,然后当我们再此运行的时候,虽然在我们代码中认为是关中断的状态,但其实中断已经被打开。     所以总的来说,在关中断的条件下也是不可以睡眠的,只是系统没有为这个条件引发一个BUG。


上一篇:GRUB 入门
下一篇:[ASP.NET学习笔记之二十七]实战.NET Remoting

相关文章

关键词: 关中断,睡眠

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款