将数据从内核空间设备读取到用户空间进程的首选方法是什么?

将数据从内核空间设备读取到用户空间进程的首选方法是什么?

我当前正在通过首先打开设备节点的文件描述符、对其调用 read() 并再次关闭文件描述符来查询我的传感器。对于动态传感器数据,我会无限循环地重复此过程。

我想知道是否有一种更经济的方法来镜像或符号链接数据,这些数据已经位于设备树中的类似文件的结构中,而不是创建内存中已存在的该数据的副本。

答案1

一种选择是创建一个自定义文件系统,并通过安装该系统来公开您的数据。也许一个干净的解决方案是用户空间文件系统,或者一些仅限用户空间的选项,例如古代的mtools(1)读/写 FAT 文件系统。

无论如何,这很大程度上取决于所述数据的使用。除非性能确实至关重要,否则纯用户态解决方案可能是最容易构建且最灵活/面向未来的。在内核空间中闲逛的是保证快速的开发速度会让你很快陷入困境,除非你设法将你的东西包含在官方内核中,或者严格遵守只在模块中使用官方导出的接口。

相关内容