Skip to main content

Module facade

Module facade 

Source
Expand description

Architecture facade (HAL) for Strat9-OS

This module is the ONLY architecture-neutral entry point that non-arch kernel code may use. All references to crate::arch::x86_64::... outside of the arch/ directory have been migrated here (jalon R0 of the RISC-V port plan: see doc/riscv-port-implementation.md).

Design:

  • Under target_arch = "x86_64", this module re-exports the existing x86_64 backend verbatim (zero behaviour change).
  • Under target_arch = "riscv64", a minimal bring-up backend provides the same API surface (subset growing with each jalon).
  • New code MUST use these re-exports, never a concrete backend directly.

Re-exports§

pub use backend::percpu;
pub use backend::serial;
pub use backend::cli;
pub use backend::hlt;
pub use backend::interrupts_enabled;
pub use backend::restore_flags;
pub use backend::save_flags_and_cli;
pub use backend::sti;
pub use backend::rdtsc;
pub use backend::cpuid;
pub use backend::cpuid;
pub use backend::speaker;
pub use crate::arch::x86_64::percpu::MAX_CPUS;
pub use crate::arch::x86_64::apic;
pub use crate::arch::x86_64::boot_timestamp;
pub use crate::arch::x86_64::clac;
pub use crate::arch::x86_64::gdt;
pub use crate::arch::x86_64::idt;
pub use crate::arch::x86_64::init_cpu_extensions;
pub use crate::arch::x86_64::io;
pub use crate::arch::x86_64::ioapic;
pub use crate::arch::x86_64::keyboard;
pub use crate::arch::x86_64::keyboard_layout;
pub use crate::arch::x86_64::mouse;
pub use crate::arch::x86_64::msi;
pub use crate::arch::x86_64::pci;
pub use crate::arch::x86_64::pic;
pub use crate::arch::x86_64::rdmsr;
pub use crate::arch::x86_64::ring3_diag;
pub use crate::arch::x86_64::smp;
pub use crate::arch::x86_64::stac;
pub use crate::arch::x86_64::syscall;
pub use crate::arch::x86_64::timer;
pub use crate::arch::x86_64::tlb;
pub use crate::arch::x86_64::tss;
pub use crate::arch::x86_64::vga;
pub use crate::arch::x86_64::vgabuf;
pub use crate::arch::x86_64::wrmsr;
pub use crate::arch::x86_64::xgetbv;
pub use crate::arch::x86_64::xsetbv;

Modules§

backend
The active backend, as crate::arch::backend::*.