驱动框架迁移记录
宿主物理设备已经从旧 ax-driver 全局容器模型迁移到 rdrive + rdif 驱动框架。迁移围绕设备发现、能力接口、领域服务和上层消费路径分阶段完成。
迁移阶段
Phase 1: rdrive backend 分发
- 增加
PlatformSource::{Static,Fdt,Acpi}和ProbeKind::{Static,Fdt,Acpi,Pci}。 - 新增
probe::acpi模块;ACPI 初始化提供 MCFG、GSI controller routing、PCI_PRT和普通设备 IRQ metadata。 probe_pre_kernel()和probe_all()改为 backend 分发,保留当前 FDT 与 PCI 能力。Manager保持只管理 register 和 typed device registry。
Phase 2: 补齐 rdif-display/input/vsock
- 新增三个 interface crate 并接入 workspace。
- 每个 crate 按
error/types/interface或addr/event/interface拆文件。 - 不依赖
ax-driver、ax-runtime、ax-hal或平台 crate。
Phase 3: block volume service
- 抽出唯一分区扫描实现,支持 GPT、MBR、raw disk。
- 产出
BlockVolume和裁剪后的 block reader。 ax-fs/ax-fs-ng只消费 volume 和 FS block trait。
Phase 4: NET / NET-NG 硬切
ax-net/ax-net从AxNetDevice切到rd-net或 net service。- DHCP/static IP policy 留在 net service 或 NET/NET-NG,不回到 platform glue。
Phase 5: display / input / vsock 硬切
- 新增 runtime wrapper
rd-display、rd-input、rd-vsock。 - 上层 display/input/vsock 模块消费领域 service,不接收
AxDeviceContainer。
Phase 6: ax-runtime 切主线
- 删除宿主初始化主线中的
ax-driver::init_drivers()和AllDevices拆包。 - 平台 later init 后调用
rdrive::probe_all(false)。 - 调用领域 service 初始化 FS、NET、display、input、vsock。
Phase 7: feature 映射切换
ax-runtime中旧ax-driver/virtio-*、driver-*、bus-*映射到 rdrive probe feature。- legacy
ax-driverfeature 只保留给未迁移代码,不作为新宿主路径入口。