为什么configfs不支持mmap?

Why doesn't configfs support mmap?

我正在为嵌入式系统开发 linux 内核模块。
该系统包含可编程逻辑(PL),需要从用户空间进程访问。

我希望允许进程映射整个页面,以便它们能够直接与 PL 通信。

但是configfs不支持mmap。

一个解决方案是将我的 configfs 树镜像到 sysfs,
但这打败了使用 configfs 的全部原因...有什么想法吗?

configfs 不能替代 sysfs。其实可以看成是sysfs.

的反义词

sysfs 通过文件系统接口提供内核对象的视图。它可用于更改这些对象中的内容或引起对这些对象的某些操作,但它并非用于此目的。这里的要点是 sysfs 中表示的每个对象都是在内核中创建和销毁的。内核控制着 sysfs 表示的生命周期,而 sysfs 只是这一切的 window。

另一方面,

configfs 提供了一种通过文件系统接口创建或更改内核对象的方法。这是一个根本的区别。 user-space 进程可以在 configfs 内创建目录。该操作将导致在内核中执行回调并创建相应的内核对象。目录中的文件将代表各种对象组件的状态。

我怀疑在这两种情况下,由于内核和用户 space 进程之间数据交换的性质,认为在 configfs 中没有必要支持 mmap。

没有看到您系统的 design/architecture 就很难对您的情况下定论。从您的描述看来,sysfs 可能是您满足预期目标所需要的。您需要访问的所有对象都是从内核创建、修改和销毁的。可以通过 sysfs 接口限制 settings/changes 到模块中现有的内核 structures/objects。再一次,您可能希望在模块中同时拥有 sysfsconfigfs 接口,每个接口都有其特定用途。如果它能让事情变得更清晰,那也没什么不好的。