[关闭]
@zwh8800 2017-08-23T10:06:51.000000Z 字数 932 阅读 191177

linux 设备驱动程序 (6) – 阻塞型 io、poll

blog 归档 linux 驱动开发


linux 设备驱动程序 (6) – 阻塞型 io、poll


阻塞型 IO

上篇的例子中, 当资源不可获取时 (读写指针指向同一个位置) 我们提到了采取阻塞的方式. 这一篇展开叙述阻塞 io.

在用户态程序中, 调用进程通常只会简单的调用 read 和 write, 不会考虑数据是否可用, 输出缓冲区是否已满之类的问题. 在我们的驱动程序中, 当遇见这种情况应当 [默认] 阻塞该进程, 直到数据可用.

但在这之前, 先来讨论一下 unix 中的 io 模型. unix 中的 io 大概包括以下几类:

非阻塞型 io 语义

非常简单, 当数据不可用时, read/write 函数返回 EAGAIN. 所以我们的驱动程序只需当数据不可用时返回 - EAGAIN 即可

阻塞型 IO 语义

这是 unix 中最常见的的 IO. 对于阻塞型 IO 语义的总结如下:

对于从设备读取数据:

对于向设备写入数据:

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注