- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为嵌入式系统开发一个 linux 内核模块。
该系统包含可编程逻辑(PL),需要从用户空间进程访问。
PL 可以在运行时更改。
我的模块允许进程访问指定的硬件寄存器和页面。
这些映射在我的模块的 configfs 绑定(bind)中配置(在运行时)。
每个映射在 configfs 中都有一个条目,通过它可以访问。
我想允许进程映射整个页面,这样它们就可以直接与 PL 通信。
但是configfs 不支持mmap。
一个解决方案是将我的 configfs 树镜像到 sysfs,
但这打败了使用 configfs 的全部理由......有什么想法吗?
最佳答案
configfs
不能替代 sysfs
。事实上,它可以看作是 sysfs
的对立面。
sysfs
通过文件系统接口(interface)提供内核对象的 View 。它可用于更改这些对象中的内容或引起对这些对象的某些操作,但它并非用于此目的。这里的要点是 sysfs
中表示的每个对象都是在内核中创建和销毁的。内核控制着 sysfs 表示的生命周期,而 sysfs 只是这一切的一个窗口。
configfs
提供了一种通过文件系统接口(interface)创建或更改内核对象的方法。这是一个根本的区别。用户空间进程可以在 configfs
中创建目录。该操作将导致在内核中执行回调并创建相应的内核对象。目录中的文件将代表各种对象组件的状态。
我怀疑在这两种情况下,由于内核和用户空间进程之间数据交换的性质,认为没有必要在 configfs
中提供 mmap 支持。
如果没有看到您系统的设计/架构,就很难对您的情况下定论。从您的描述看来,sysfs
可能是您满足预期目标所需要的。您需要访问的所有对象都是从内核创建、修改和销毁的。可以通过 sysfs
接口(interface)对模块中现有的内核结构/对象进行有限的设置/更改。话又说回来,您可能希望在您的模块中同时拥有 sysfs
和 configfs
接口(interface),每个接口(interface)都有其特定用途。如果它能让事情变得更干净、更清晰,那没什么不好的。
关于linux - 为什么configfs不支持mmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39531078/
我正在使用 Altera 的带有双 Cortex-A9 处理器的 Cyclone V SOC FPGA。嵌入式系统(linux 4.15.7)是用 Buildroot-2018.02 创建的。 U-b
我目前正在尝试将我的 Android 手机连接到我的 Windows 机器,同时充当 HID、RNDIS 和 MASS_STORAGE 设备。这些模式中的每一个作为单一模式都工作正常,但我无法将它们正
我正在尝试在设备模式下为单个 USB 设备 Controller 端口添加 uvc 和大容量存储。我正在使用 configfs 来完成工作。 谁能告诉我怎么做。 问候,雷达 最佳答案 您正在制作一种既
我是一名优秀的程序员,十分优秀!