ax-api
路径:
os/arceos/api/arceos_api类型:库 crate 分层:ArceOS 层 / ArceOS 公共 API/feature 聚合层 版本:0.3.0-preview.3文档依据:Cargo.toml、src/lib.rs、src/macros.rs、src/imp/mod.rs、src/imp/mem.rs、src/imp/task.rs、src/imp/fs.rs、src/imp/net.rs、src/imp/display.rs
ax-api 是 ArceOS 官方的公共 API 门面层。它把底层 ax* 模块能力按领域重新组织成稳定的 ax_* 接口,使上层用户库、应用接口层和部分系统软件可以在不直接耦合大量内部模块的前提下访问内核能力。
架构设计
设计定位
ax-api 的设计非常明确:
- 它不是运行时本体,不负责初始化系统,也不直接实现调度、内存、网络或文件系统算法。
- 它是一层 薄门面:对外给出稳定、按域划分的
ax_*API,对内把实现集中到imp/。 - 它与
ax-feat配合,通过 feature 控制哪些 API 域进入最终镜像。 - 它既是
ax-std的重要下层依赖,也是 ArceOS 模块能力暴露给更上层时最推荐的接入边界。
因此,理解 ax-api 的关键不在复杂数据结构,而在“API 定义如何生成”“API 可见性如何由 feature 控制”“API 最终映射到哪些模块”。
模块结构
src/lib.rs:顶层 API 定义文件。用define_api!/define_api_type!分域导出sys、time、mem、stdio、task、fs、net、display等接口。src/macros.rs:核心宏定义。负责把 API 声明转换为真正的pub fn、pub use或可选占位类型。src/imp/mod.rs:实现聚合层,按 feature 组织mem、task、stdio、sys、time、fs、net、display等子模块。src/imp/mem.rs:内存与 DMA API 的具体实现。src/imp/task.rs:睡眠、yield、退出、任务句柄、等待队列和亲和性相关实现。src/imp/fs.rs:文件/目录句柄、路径操作和OpenOptions等文件系统门面实现。src/imp/net.rs:TCP/UDP 句柄、DNS、接口轮询等网络 API 实现。src/imp/display.rs:显示信息和 flush 相关实现。