资料介绍
Linux设备驱动编程之阻塞与非阻塞
Linux设备驱动编程之阻塞与非阻塞 | |
|文章来源: 天极软件 文章作者: 宋宝华 发布时间: 2006-10-22 字体:|
|[大 中 小] |
| |
| |
| 阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直|
|到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作|
|时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移 |
|走,直到等待的条件被满足。 |
| 在Linux驱动程序中,我们可以使用等待队列(wait queue)来实现 |
|阻塞操作。wait queue很早就作为一个基本的功能单位出现在Linux内核 |
|里了,它以队列为基础数据结构,与进程调度机制紧密结合,能够用于实|
|现核心的异步事件通知机制。等待队列可以用来同步对系统资源的访问,|
|上节中所讲述Linux信号量在内核中也是由等待队列来实现的。 |
| 下面我们重新定义设备"globalvar",它可以被多个进程打开,但是 |
|每次只有当一个进程写入了一个数据之后本进程或其它进程才可以读取该|
|数据,否则一直阻塞。 |
|#include