poll

    xiaoxiao2021-03-25  124

    原文地址:http://blog.csdn.net/gtkknd/article/details/7229576

    ###########################################################################################################################

    应用程序使用 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 表示出错

    转载请注明原文地址: https://ju.6miu.com/read-17878.html

    最新回复(0)