【问题标题】:Implementing asynchronous read/write support in linux device driver在 linux 设备驱动程序中实现异步读/写支持
【发布时间】:2013-12-21 23:13:27
【问题描述】:

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

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

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

但是,我看到开发人员使用带有 tty 驱动程序的 select_read 调用。不确定应该为我现有的设备驱动程序添加哪些支持以使用来自用户空间的 select_read。

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

【问题讨论】:

  • select()struct file_operations{} 中没有文件操作 (fop),那么您认为除了 fops 之外还需要实现什么以及为什么?

标签: asynchronous linux-kernel linux-device-driver embedded-linux


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多