Asynchronous 在linux设备驱动程序中实现异步读写支持

Asynchronous 在linux设备驱动程序中实现异步读写支持,asynchronous,linux-kernel,linux-device-driver,embedded-linux,Asynchronous,Linux Kernel,Linux Device Driver,Embedded Linux,我需要在linux设备驱动程序中实现异步读/写支持。 用户空间程序应该从设备驱动程序获得一个异步信号,表明驱动程序有数据,用户空间程序可以读取数据。 下面是我通过谷歌搜索和LDD图书找到的选项 [1] 实现轮询读取。驱动程序返回读/写队列的状态。然后,用户空间程序可以决定是否在设备上执行读/写操作 [2] 实现异步通知。当驱动端的数据准备就绪时,设备驱动程序能够向用户空间发送信号。然后,用户空间程序可以读取数据 然而,我看到开发人员使用带有tty驱动程序的select_read调用。不确定使用s

我需要在linux设备驱动程序中实现异步读/写支持。 用户空间程序应该从设备驱动程序获得一个异步信号,表明驱动程序有数据,用户空间程序可以读取数据。 下面是我通过谷歌搜索和LDD图书找到的选项

[1] 实现轮询读取。驱动程序返回读/写队列的状态。然后,用户空间程序可以决定是否在设备上执行读/写操作

[2] 实现异步通知。当驱动端的数据准备就绪时,设备驱动程序能够向用户空间发送信号。然后,用户空间程序可以读取数据

然而,我看到开发人员使用带有tty驱动程序的select_read调用。不确定使用select_read from user space时应向现有设备驱动程序添加什么支持


需要您提供上述最有效方法的建议。

异步用户通知(信号)更难使用,因此通常建议使用poll()

您不需要单独实现select(),poll()和select()都是映射到内核中驱动程序的.poll回调的用户空间接口。

struct file\u operations{}
中没有针对
select()
的文件操作(fop),那么您认为除了fop之外还需要实现什么呢?