- 论坛徽章:
- 1
|
正在学习驱动程序的编写,学到这里了,我在下面符上主要代码:
struct mydev{
struct cdev cdev;
wait_queue_head_t wq;//设置等待队列
};
int t_open(struct inode *inode,struct file *filp){
struct mydev *dev = filp->private_data;
DECLARE_WAITQUEUE(wait,current);
if(!lock_open()){//写好的锁控制,是没错的 。没有获得锁则进入等待队列。
printk(KERN_INFO "someone want to use\n");
add_wait_queue(dev->wq,&wait);//加上这句话和下面一句话是错的
__set_current_state(TASK_INTERRUPTIBLE);//这句 schedule();
flag++;
return -EBUSY;
}
printk(KERN_INFO "open success\n");
return 0;
}
回复 3# 历史的哭泣
|
|