os/fs/proc/
mod.rs

1//! ProcFS - 进程信息伪文件系统
2//!
3//! 该模块提供了一个与 **Linux /proc 兼容的虚拟文件系统**,用于导出内核和进程信息。
4//!
5//! # 组件
6//!
7//! - [`ProcFS`] - 文件系统结构,管理 /proc 目录树
8//! - [`ProcInode`] - Inode 实现,支持静态和动态内容
9//! - [`ContentGenerator`] - 动态内容生成器 trait
10//! - [`generators`] - 内置生成器(meminfo、cpuinfo、uptime 等)
11//!
12//! # 设计概览
13//!
14//! ## Generator 模式
15//!
16//! ProcFS 使用 **Generator 模式** 动态生成文件内容:
17//!
18//! ```rust
19//! pub trait ContentGenerator: Send + Sync {
20//!     fn generate(&self) -> Vec<u8>;
21//! }
22//! ```
23//!
24//! ## 文件类型
25//!
26//! - **静态文件**:内容固定,创建时确定
27//! - **动态文件**:每次读取时调用 Generator 生成
28//! - **动态符号链接**:目标路径动态计算(如 `/proc/self`)
29//! - **进程目录**:为每个进程创建 `/proc/[pid]/` 子目录
30//!
31//! # 导出的信息
32//!
33//! ## 系统信息
34//!
35//! - `/proc/meminfo` - 内存使用情况
36//! - `/proc/cpuinfo` - CPU 信息
37//! - `/proc/uptime` - 系统运行时间
38//! - `/proc/mounts` - 挂载点列表
39//!
40//! ## 进程信息
41//!
42//! - `/proc/[pid]/stat` - 进程状态(单行格式)
43//! - `/proc/[pid]/status` - 详细状态(键值对格式)
44//! - `/proc/[pid]/cmdline` - 命令行参数
45//!
46//! # 使用示例
47//!
48//! ```rust
49//! use crate::fs::init_procfs;
50//!
51//! // 初始化并挂载 procfs
52//! init_procfs()?;
53//!
54//! // 读取系统信息
55//! let meminfo = vfs_load_file("/proc/meminfo")?;
56//! let uptime = vfs_load_file("/proc/uptime")?;
57//! ```
58
59pub mod generators;
60pub mod inode;
61pub mod proc;
62
63pub use inode::{ContentGenerator, ProcInode, ProcInodeContent};
64pub use proc::ProcFS;