Linux驱动总结3
if(_IOC_NR(cmd)> ioarg = &mem_devp-> wait-> spin_lock_irqsave(&q-> if (list_empty(&wait-> spin_unlock_irqrestore(&q-> spin_lock_irqsave(&q-> spin_unlock_irqrestore(&q-> list_for_each_entry_safe(curr, next, &q-> unsigned flags = curr-> if (curr-> struct mem_dev *dev = filp-> if(p > if(count > add_wait_queue(&dev-> if(filp-> wait_event_interruptible(dev-> spin_lock(&dev-> if(copy_to_user(buf,(void *)(dev-> spin_unlock(&dev-> remove_wait_queue(&dev-> wake_up_interruptible(&dev-> struct mem_dev *dev = filp-> if(p > if(count > add_wait_queue(&dev-> if(filp-> UE和add_wait_queue的操作,因此不需要手动添加等待队列节点*/ wait_event_interruptible(&dev->wrqueue,(!havedata)); } spin_lock(&dev->lock); if(copy_from_user(dev->data p,buf,count)) ret = -EFAULT; else { /*改变文件位置*/ *ppos = count; ret = count; printk(KERN_INFO "writted %d bytes(s) from %d",count,p); } spin_unlock(&dev->lock); #if 0 /*将该等待节点移除*/ remove_wait_queue(&dev->wrqueue,&wait_w); #endif /*更新条件*/ havedata = true; /*唤醒读等待队列*/ wake_up_interruptible(&dev->rdqueue); return ret; } 5、应用程序采用两个不同的进程分别进行读、写,然后检测顺序是否可以调换,检查等待是否正常。
Linux驱动总 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)