poll_wait新的理解

应用程序使用 select() 或 poll() 调用设备驱动程序的 poll() 函数,该函数把输入输出复用处理的等待队列追加到由内核管理的进程的 poll_table()上。此时,poll() 函数上传递的参数包括含有设备文件信息的 struct file 结构体的指针参数 struct file *filp ,以及追加到设备驱动上的 poll_table结构体指针参数 poll_table *wait 。使用这两个参数,然后通过poll_wait()函数,在内核上注册输入输出复用条件。poll_wait() 函数表示如下:
#include <linux/poll.h>
static inlinevoid poll_wait ( struct file * filp , wait_queue_head_t * wait_address , poll_table *P);


关于应用程序中 poll() 的返回值 :

应用程序中调用 select() 和 poll() 函数, 使进程进入睡眠之前,内核先检查设备驱动程序上有无对应事件的状态,此时可通过查看 poll() 函数的返回值获得相关信息.

能够在返回值上使用的宏变量有以下组合:
POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL,  POLLRDNORM,  POLLRDBAND,  POLLWRNORM,  POLLWRBAND, POLLMSG,  POLLREMOVE

这些值中使用最多的是下面几个组合:
  • POLLIN | POLLRDNORM 表示可读
  • POLLOUT | POLLWRNORM 表示可写
  • POLLERR 表示出错

来源:http://blog.csdn.net/gtkknd/article/details/7229576

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值