一. 简介
如果用户应用程序以非阻塞的方式访问设备,设备驱动程序就要提供非阻塞的处理方式,也就是轮询。
本文来学习Linux内核提供处理非阻塞 IO的方法:轮询。
二. Linux内核提供处理非阻塞访问的方法:轮询
应用层中提供的 select函数、poll函数 和 epoll函数可以用于处理轮询,应用程序通过 select、
epoll
或
poll
函数来查询设备是否可以操作,如果可以操作的话,就从设备读取或者向设备写入数据。
当应用程序调 用 select、epoll 或 poll 函数时,设备驱动程序中的 poll
函数就会执行,因此,需要在设备驱动
程序中编写
poll
函数。
我们先来看一下应用程序中使用的
select()、
poll()
和
epoll()
这三个函数。
1. select 函数
select
函数原型如下: