我们可以使用epoll()来轮询使用ioctl进行数据传输的描述符

时间:2015-08-11 07:44:44

标签: c linux io linux-device-driver epoll

我遇到了一种情况,我必须在文件描述符上轮询事件,该文件描述符使用ioctl命令进行数据传输(不使用read())。我知道epoll()可以用在文件描述符上,该描述符使用read()和write()进行数据传输。但是一些驱动程序使用ioctl命令进行数据传输。我们可以在这些类型的文件描述符上使用epoll()吗?

1 个答案:

答案 0 :(得分:1)

这取决于司机。来自LDD3

  

pollselectepoll具有基本相同的功能[...]

     

支持任何这些呼叫都需要设备支持   驱动程序。这个支持(对于所有三个电话)是通过提供的   司机的poll方法。该方法具有以下原型:

unsigned int (*poll) (struct file *filp, poll_table *wait);

换句话说,只有在实现内部select功能时,驱动程序管理的文件描述符才能与epoll / poll等一起使用。