os/fs/sysfs/
mod.rs

1//! Sysfs 虚拟文件系统
2//!
3//! 提供与 Linux 兼容的 sysfs 接口,用于暴露设备和内核信息。
4//!
5//! # 特性
6//!
7//! - 冷插拔: 设备在启动时注册,运行时不变
8//! - 只读: 大部分文件只读 (部分配置文件可写)
9//! - 动态生成: 文件内容通过闭包动态生成
10//! - Linux ABI 兼容: 符合 Linux sysfs 规范
11//!
12//! # 目录结构
13//!
14//! ```text
15//! /sys/
16//! ├── devices/          # 设备层次结构 (真实设备目录)
17//! │   └── platform/
18//! │       ├── vda/      # 块设备
19//! │       │   ├── dev
20//! │       │   ├── uevent
21//! │       │   ├── size
22//! │       │   ├── ro
23//! │       │   ├── removable
24//! │       │   ├── stat
25//! │       │   └── queue/
26//! │       │       ├── logical_block_size
27//! │       │       ├── physical_block_size
28//! │       │       ├── hw_sector_size
29//! │       │       ├── max_sectors_kb
30//! │       │       └── rotational
31//! │       └── eth0/     # 网络设备
32//! │           ├── uevent
33//! │           ├── address
34//! │           ├── mtu
35//! │           ├── operstate
36//! │           ├── carrier
37//! │           ├── ifindex
38//! │           └── type
39//! ├── class/            # 设备分类 (符号链接)
40//! │   ├── block/
41//! │   │   └── vda -> ../../devices/platform/vda
42//! │   └── net/
43//! │       └── eth0 -> ../../devices/platform/eth0
44//! ├── block -> class/block/  # 向后兼容
45//! └── kernel/           # 内核信息
46//!     ├── version
47//!     └── osrelease
48//! ```
49//!
50//! # Linux ABI 兼容性
51//!
52//! 实现了以下 Linux ABI 稳定属性:
53//!
54//! ## 块设备
55//! - `dev`: major:minor 设备号
56//! - `uevent`: udev 事件文件
57//! - `size`: 设备大小(512字节扇区数)
58//! - `ro`: 只读标志
59//! - `removable`: 可移动标志
60//! - `stat`: I/O 统计信息
61//! - `queue/logical_block_size`: 逻辑块大小
62//! - `queue/physical_block_size`: 物理块大小
63//! - `queue/hw_sector_size`: 硬件扇区大小
64//! - `queue/max_sectors_kb`: 最大传输大小
65//! - `queue/rotational`: 旋转设备标志
66//!
67//! ## 网络设备
68//! - `uevent`: udev 事件文件
69//! - `address`: MAC 地址
70//! - `mtu`: 最大传输单元
71//! - `operstate`: 操作状态
72//! - `carrier`: 载波状态
73//! - `ifindex`: 接口索引
74//! - `type`: 设备类型
75
76mod builders;
77mod device_registry;
78mod inode;
79mod sysfs;
80
81pub use device_registry::{find_block_device, find_net_device};
82pub use sysfs::SysFS;