我遇到了一种情况,我必须在文件描述符上轮询事件,该文件描述符使用ioctl命令进行数据传输(不使用read())。我知道epoll()可以用在文件描述符上,该描述符使用read()和write()进行数据传输。但是一些驱动程序使用ioctl命令进行数据传输。我们可以在这些类型的文件描述符上使用epoll()吗?
答案 0 :(得分:1)
这取决于司机。来自LDD3:
poll
,select
和epoll
具有基本相同的功能[...]支持任何这些呼叫都需要设备支持 驱动程序。这个支持(对于所有三个电话)是通过提供的 司机的
poll
方法。该方法具有以下原型:unsigned int (*poll) (struct file *filp, poll_table *wait);
换句话说,只有在实现内部select
功能时,驱动程序管理的文件描述符才能与epoll
/ poll
等一起使用。