2 个版本

0.0.2 2024年7月17日
0.0.1 2024年7月15日

#354 in Unix APIs

Download history 241/week @ 2024-07-14 3/week @ 2024-07-21

每月下载量 244

MIT 许可证

52KB
673 代码行,不包括注释

sysfs-rs

[!IMPORTANT] 请注意,此包非常不完整,在相当长一段时间内都不会被认为是稳定的。公共 API 可能会大幅更改。随着更多 sysfs 属性被封装和文档化,可能需要更改组织结构,以提供更统一和一致的开发者体验。

这是什么?

此包包含三个核心目标

  1. 提供用于(最终)Linux 所有 sysfs 属性的、组织良好的层次结构中的安全函数和类型。

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

  3. 提供属性宏助手和转换函数,以生成任何给定 sysfs 属性的访问器。由于 sysfs 非常庞大,单个属性难以发现和正确使用,因此此包的内部宏被导出供其他开发者使用,以便他们可以定义此包中缺失的属性和模块。

    • 请贡献属性定义!

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

如何使用它?

首先,已经定义了一些针对 sysfs 目录的模块,其属性已被包装。请在crate的 sysfs::api 模块中浏览文档,看是否有你需要的内容。例如,有获取函数,比如 sysfs::api::psu::power_supply::capacity,它读取电池的充电级别作为一个f32百分比值(0.00 .. 1.00)。然后还有设置器,它们将类型化数据序列化并写入到sysfs属性文件,例如 sysfs::api::psu::power_supply::set_charge_behavior

其次,如果在这个crate的 sysfs::api 模块中还没有定义包装器,你可以自由地实现自己的!请参考sysfs::lib中的项目文档和现有模块的源代码(例如sysfs::api::cpu)以获取如何开始的灵感。此外,对api模块的贡献非常受欢迎和感激!

依赖关系

~305–780KB
~18K SLoC