其他问题

Linux之poll机制原理及用法

  一、在用户空间应用程序向驱动程序请求数据时,有以下几种方式:

  1.不管查询,条件不满足的情况下就是死循环,非常耗cpu

  2.休眠唤醒的方式,如果条件不满足,应用程序则一直睡眠下去

  3.poll机制:如果条件不满足,休眠指定的时间,休眠时间内条件满足唤醒,条件一直不满足时间到达自动唤醒

  4.异步通知:应用程序注册信号处理函数函数,驱动程序发信号。类似于QT的信号与槽机制

  二、函数

  2.1.函数原型

  int poll(struct pollfd *fds, nfds_t nfds, int timeout);

  复制代码

  2.2.事件类型events可以为下列值:

  POLLIN:有数据可读

  POLLRDNORM:有普通数据可读,等效于POLLIN

  POLLRDBAND:有优先数据可读

  POLLPRI:有紧迫数据可读

  POLLOUT:写数据不会导致阻塞

  POLLWRNORM:写普通数据不会导致阻塞

  POLLWRBAND:写优先数据不会导致阻塞

  POLLMSG:SIGPOLL消息可用

  POLLER:指定的文件描述符发生错误

  POLLHUP:指定的文件描述符挂起事件

  POLLNVAL:无效的请求,打不开指定的文件描述符

  复制代码

  2.3.返回值

  有事件发生,返回events域不为0的文件描述符个数(也就是说事件发生,或者错误报告),超时返回0,失败返回-1,并设置errno为错误类型

  三、linux内核poll实现机制

  从应用程序调用poll()函数开始,一直到调用drivers_poll函数,期间的过程很复杂,捡主要的内容列出来:

  [code][/code]




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
上一篇:SSH 命令连接 Linux 服务器的操作方法
下一篇:linux之 if 语法
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部