LDD3笔记(3)

原创 2006年06月17日 23:41:00

2006617星期六

当被调用的驱动程序无法满足调用者的请求,它应该阻塞该进程,进程置于休眠状态直到其请求可继续。

把进程置于休眠时,注意两条规则:1.不要在原子上下文中进入休眠。原子上下文是指:在执行多个步骤的时候,不能有并发的访问。 2. 被唤醒之后,必须检查,以确保我们等待的条件真正为真。

linux中,等待队列通过“等待队列头”来管理,它是一个wait_queue_head_t的结构体,定义在 linux/wait.h中。可以用静态或者动态的方法来初始化一个等待队列头。

可以用四种wait_event宏来把进程置于休眠。它需要的参数是queue(等待队列头)和condition(布尔表达式,条件为真时,将被唤醒)。

唤醒用的宏是两种wake_up宏。

有时调用者进程会通知我们它不想被阻塞。显式的非阻塞的I/Ofilp->f_flags中的O_NONBLOCK标志决定。 Linux/fcntl.h  linux/fs.h

在驱动程序中使用输出缓冲区可以提高性能。

注意 scull例子中如何使用while循环来实现 休眠和唤醒。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GLSL 内建函数

OpenGL ES着色语言为标量和向量操作定义了一套内建便利函数。有些内建函数可以用在多个类型的着色器中,有些是针对固定硬件的,所以这部分只能用在某个特定的着色器上。        内建函数基本上可...
  • hgl868
  • hgl868
  • 2012-08-17 10:50
  • 45213

GLSL核心课程---纹理图像

大多数时候我们会将一幅纹理图像应用到模型上,或多或少就像壁纸一样。有时候纹理还可以看成是数据,不是颜色值。纹理坐标提供了在图像和模型之间的映射关系。在我们着色器中处理使用纹理之前我们需要在我们的Ope...
  • smsmn
  • smsmn
  • 2013-08-13 19:18
  • 695

缓冲区对象

今天在做CUDA的程序,突然出现了有关OpenGL缓冲区对象的函数,这让我很是纠结,因为我的OpenGL的基础不是很好,才接触不到一个月,今天我就稍微介绍一下缓冲区对象的有关函数。(参考OpenGL编...
  • smsmn
  • smsmn
  • 2011-04-10 23:53
  • 760

LDD3读书笔记(第8章 时间、延迟及延缓操作)

计时 #include HZ     HZ符号指出每秒钟产生的时钟滴答数。 #include volatile unsigned long jiffies u64 jiffies_64...

LDD3学习笔记(2):建立和运行模块

1、建立开发环境在开始编写代码以及研究代码之前,你需要有一个开发环境,也就是一个linux系统。通常我们的做法是在windows下安装一个虚拟机软件,然后在虚拟机软件中安装一个linux系统的发行版本...

LDD3笔记:第三章 字符设备驱动

平凡的我们不能预见虚无且略带迷茫的明天,唯有着眼当下做好我们手边的事,这才是王道。   初来咋到不敢造次,追寻伟人,以期借肩膀一用,弱弱的陈述,积极的整理。举网络资源之海量,去迷茫众生之浮躁。新...

LDD3驱动学习笔记1---Hello World

原创文章:转载请说明出处:http://blog.csdn.net/crzy_sparrow/article/details/7367288 本文目录: 1.  构建内核源码树     1.1U...

[LDD3阅读笔记]中断处理

中断处理 1. 安装中断程序 #include  typedef irqreturn_t (*irq_handler_t)(int, void *); extern i...

LDD3笔记:第二章 构造和运行模块

在正式进行驱动开发前,需要了解有关模块编程和内核编程的一些基本概念。在本节中将会构造几个完整的(但绝对没啥功用的)模块。设置测试系统一般的发行版本都会装好内核代码树的,用过的Red Hat Enter...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)