曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 8055|回复: 0
打印 上一主题 下一主题

poll_wait() | 注册 poll 等待队列

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-11-9 18:36:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
应用程序使用 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 inline void 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://www.groad.net/bbs/read.php?tid-1353.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-3 13:22 , Processed in 0.061629 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表