linux键盘驱动(模块动态加载)四
时间:2007-01-29 来源:rayter
linux键盘驱动(模块动态加载)四
八.poll系统调用操作接口函数
在本章地驱动程序中,Keypad_poll()函数在缓冲区有新数据时(当head!=tail),返回一个POLLIN|POLLRDNORM,告诉主进程有新的
当程序需要进行对多个文件读写时,如果某个文件没有准备好,则系统就会处于读写阻塞的状态,这影响了其他文件的读写,为了避免读写阻塞,一般可以在应用程序中使用poll或者select函数。当poll函数返回时,会给出一个文件是否可读写的标志,应用程序根据不同的标志读写相应的文件,实现非阻塞的读写,poll()函数通过poll系统调用,调用对应设备驱动的poll()接口函数,poll返回不同的标志,告诉主进程文件是否可以读写,这些返回标志存放在include\asm\poll.h中
标志 | 含义 |
POLLIN |
如果设备无阻塞的读,就返回该值 |
POLLRDNORM |
通常的数据已经准备好,可以读了,就返回 该值。通常的做法是会返回(POLLLIN|POLLRDNORA) |
POLLRDBAND | 如果可以从设备读出带外数据,就返回该值,它只可在linux内核的某些网络代码中使用,通常不用在设备驱动程序中 |
POLLPRI | 如果可以无阻塞的读取高优先级(带外)数据,就返回该值,返回该值会导致select报告文件发生异常,以为select八带外数据当作异常处理 |
POLLHUP | 当读设备的进程到达文件尾时,驱动程序必须返回该值,依照select的功能描述,调用select的进程被告知进程时可读的。 |
POLLERR | 如果设备发生错误,就返回该值。 |
POLLOUT | 如果设备可以无阻塞地些,就返回该值 |
POLLWRNORM | 设备已经准备好,可以写了,就返回该值。通常地做法是(POLLOUT|POLLNORM) |
POLLWRBAND | 于POLLRDBAND类似 |
相关阅读 更多 +