在. linux驱动开发.详解中的 8.9代码清单中 有这样的代码(关于阻塞的): 婚庆
. down(&dev->s.em); 鲜花
__.add_wait_queue(&.dev->r_wait,&wait);教育
int. ret=0;外贸
//如果fifo.为空,就.判断并阻塞等待 婚庆
. while (dev->current_.len==0)服务器
{
. if (filp.->f_flags&O_NONBLOCK) //标志无阻塞 女人
. {健康
. . ret=-EAGAIN;<性病>
. goto out;..
. }虚拟主机
s.et_current_state(TASK_INTERRUPTIBLE); //.改变进程状态学习
. up(&dev->sem.);教育
schedul.e();//放弃cpu,调.度其他进程健康
//.如果是信号唤醒--------------彩票
. if.(signal_pending(current))--------------彩票
. {.
. . ret=-ERESTARTSYS;外贸
. go.to out2; 建材
. } 乙肝
. dow.n(&dev->sem);--- 印刷
}
最后一行的down(&dev->sem);是不是错了啊?它既然进入了休眠状态,如果.再次获取信号.量的话 ,岂不死锁了?电影