平台契约
平台契约由 platforms/ax-plat 定义,平台 crate 负责实现这些 trait,ax-hal 再把它们转成 ArceOS、StarryOS 和 Axvisor 可复用的统一接口。这个边界的核心约束是:一个最终镜像中只能有一个平台 crate 实现 ax-plat 接口。
crate 全貌
ax-plat 是一个 #![cfg_attr(not(test), no_std)] 的 库(platforms/ax-plat/src/lib.rs),默认开启 alloc。其顶层模块:
// platforms/ax-plat/src/lib.rs
#![cfg_attr(not(test), no_std)]
extern crate alloc;
pub mod console;
pub mod init;
#[cfg(feature = "irq")]
pub mod irq;
pub mod mem;
pub mod percpu;
pub mod platform;
pub mod power;
pub mod time;
pub use ax_crate_interface::impl_interface as impl_plat_interface;
pub use ax_plat_macros::main;
#[cfg(feature = "smp")]
pub use ax_plat_macros::secondary_main;
两个 feature:smp(多核,依赖 ax-kspin/smp)、irq(接入 irq-framework + rdif-intc)。