微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux驱动总结3

Linux驱动总结3

时间:12-01 来源:互联网 点击:

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、应用程序采用两个不同的进程分别进行读、写,然后检测顺序是否可以调换,检查等待是否正常。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top