#attributes #sysfs #linux #helper #wrapper #read #proc-macro

sysfs_lib

为编写围绕Linux sysfs属性的舒适包装的大段代码提供Proc-macro助手

1个不稳定版本

0.0.1 2024年7月15日

#21 in #sysfs

Download history 133/week @ 2024-07-15 62/week @ 2024-08-05

每月195次下载
用于 sysfs

MIT 许可证

5KB
50

sysfs-rs

[!重要]请注意,这个crate非常不完整,并且不会在相当长的时间内被视为稳定。公共API可能会发生巨大变化。随着更多sysfs属性被封装和记录,可能需要改变组织结构,以提供更统一和一致的开发者体验。

这是什么?

这个crate体现了三个核心目标

  1. 为Linux的sysfs属性提供安全函数和类型(最终)在一个良好的组织结构中。

  2. 记录每个sysfs属性,以及从这些属性读取和写入的数据类型。有关sysfs的信息散布在各个地方,从源代码中的注释到邮件列表中的讨论线程。这个crate旨在汇总这些知识,并使其易于消化。

  3. 提供属性宏助手和转换函数,以生成任何给定sysfs属性的访问器。由于sysfs很大,而且单个属性难以发现和正确处理,这个crate的内部宏被导出给其他开发者,以便他们可以定义这个crate中缺少的属性和模块。

    • 请贡献属性定义!

请参阅维基百科页面内核文档,了解更多关于Linux的sysfs的信息。

如何使用它?

首先,已经定义了一些针对 sysfs 目录的模块,它们的属性已经被封装。浏览该库的 sysfs::api 模块以查看是否满足您的需求。例如,有获取函数,例如 sysfs::api::psu::power_supply::capacity,它读取电池的电量为 f32 百分比值(0.00 .. 1.00)。然后还有设置函数,将类型化数据序列化并写入到 sysfs 属性文件,例如 sysfs::api::psu::power_supply::set_charge_behavior

其次,如果在这个库的 sysfs::api 模块中没有已经定义的封装器,您完全可以自由地实现自己的!查看 sysfs::lib 中的项目文档以及现有模块的源代码(例如 sysfs::api::cpu)以了解如何开始。此外,对 api 模块的贡献非常受欢迎和感激!

依赖项

~270–730KB
~17K SLoC