refactor: extract ports/drivers/bins layers — clean dependency inversion
Separate abstractions from implementations following DIP:
servers/ drivers/
│ │
▼ ▼
ports/ (trait-only crates, zero deps)
New crates:
ports/ (abstractions):
- port-framebuffer: Framebuffer trait
- port-block-device: BlockDevice trait + SectorId
- port-input-device: InputDevice trait + InputEvent types
drivers/ (implementations depend on ports/):
- driver-framebuffer-virtio: VirtIO GPU framebuffer
- driver-framebuffer-mock: test double
- driver-block-virtio: VirtIO block device
bins/ (composition roots wire server + driver):
- display-qemu: DisplayServer<VirtioFramebuffer>
- storage-qemu: storage server with VirtIO block
Servers no longer own their hardware traits or driver code.
Neither server nor driver depends on the other — both point
inward to the port abstraction.
This commit is contained in:
@@ -24,11 +24,11 @@ copy() {
|
||||
copy init "init.elf"
|
||||
copy echo "echo.elf"
|
||||
copy snake "snake.elf"
|
||||
copy display-server "display.elf"
|
||||
copy display-qemu "display.elf"
|
||||
copy input-server "input.elf"
|
||||
copy log-server "log.elf"
|
||||
copy permission-manager "permis.elf"
|
||||
copy storage-server "storage.elf"
|
||||
copy storage-qemu "storage.elf"
|
||||
copy session-server "session.elf"
|
||||
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user