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

sysfs_macros

为编写围绕Linux sysfs属性的便捷封装器提供过程宏辅助工具

1个不稳定版本

0.0.1 2024年7月15日

#23#sysfs

Download history 130/week @ 2024-07-15 3/week @ 2024-07-29 63/week @ 2024-08-05

196 每月下载量
用于 sysfs

MIT 许可证

19KB
451

sysfs-rs

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

这是什么?

这个crate包含三个核心目标

  1. 提供(最终)所有Linux sysfs属性的稳健函数和类型,组织结构良好。

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

  3. 提供属性宏辅助工具和转换函数,以生成任何给定sysfs属性的访问器。由于sysfs相当大,且单个属性难以发现和正确使用,这个crate的内部宏对外部开发者开放,以便他们可以定义这个crate中缺少的属性和模块。

    • 请贡献属性定义!

更多信息请参阅维基百科页面内核文档

如何使用它?

首先,有一些模块被定义为针对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模块的贡献非常欢迎并受到赞赏!

依赖关系

~285–740KB
~18K SLoC