- 论坛徽章:
- 0
|
thank you ..
我打开的是一个阻塞的设备(用cat /dev/simpler 和echo "aaa"> /dev/simpler测试是正常的)但是好像用上面的方法就不能使
读继续执行,WHY?
static struct file_operations simple_remap_ops = {
.owner = THIS_MODULE,
.open = simple_open,
.release = simple_release,
.mmap = simple_remap_mmap,
.read =sleepy_read,
.write=sleepy_write,
};
static DECLARE_WAIT_QUEUE_HEAD(wq);
static int flag=0;
ssize_t sleepy_read(struct file *filp,char __user *buf,size_t count,loff_t *pos)
{
printk("I am in sleeyp_read,going to sleep\n");
wait_event_interruptible(wq,flag!=0);
flag=0;
printk("wake up\n");
return 0;
}
ssize_t sleepy_write(struct file *filp,const char __user *buf,size_t count,loff_t *pos)
{
printk("I am in sleepy_write\n");
flag=1;
wake_up_interruptible(&wq);
return count;
} |
|