pub trait Hal: Mmu {
Show 23 methods
// Required methods
fn kstack_size() -> usize;
fn cpu_id() -> usize;
fn cpu_context_size() -> usize;
fn boot_region_by_index(index: usize) -> Option<BootRegion>;
unsafe fn get_current_tcb_addr() -> *mut u8;
unsafe fn set_current_tcb_addr(addr: *mut u8);
unsafe fn cpu_context_sp(ctx_ptr: *const u8) -> usize;
unsafe fn cpu_context_set_sp(ctx_ptr: *const u8, sp: usize);
unsafe fn cpu_context_set_pc(ctx_ptr: *const u8, pc: usize);
unsafe fn cpu_context_switch(prev_tcb: *mut u8, next_tcb: *mut u8);
fn wait_for_interrupt();
fn irq_init_current_cpu(id: DeviceId);
fn irq_ack() -> IrqId;
fn irq_eoi(irq: IrqId);
fn irq_all_enable();
fn irq_all_disable();
fn irq_all_is_enabled() -> bool;
fn irq_enable(config: IrqParam);
fn irq_disable(id: DeviceId, irq: IrqId);
fn shutdown() -> !;
fn debug_put(b: u8);
fn dcache_range(op: CacheOp, addr: usize, size: usize);
fn driver_registers() -> DriverRegisterSlice;
}Required Methods§
fn kstack_size() -> usize
fn cpu_id() -> usize
fn cpu_context_size() -> usize
fn boot_region_by_index(index: usize) -> Option<BootRegion>
Sourceunsafe fn get_current_tcb_addr() -> *mut u8
unsafe fn get_current_tcb_addr() -> *mut u8
§Safety
Sourceunsafe fn set_current_tcb_addr(addr: *mut u8)
unsafe fn set_current_tcb_addr(addr: *mut u8)
§Safety
fn wait_for_interrupt()
fn irq_init_current_cpu(id: DeviceId)
fn irq_ack() -> IrqId
fn irq_eoi(irq: IrqId)
fn irq_all_enable()
fn irq_all_disable()
fn irq_all_is_enabled() -> bool
fn irq_enable(config: IrqParam)
fn irq_disable(id: DeviceId, irq: IrqId)
fn shutdown() -> !
fn debug_put(b: u8)
fn dcache_range(op: CacheOp, addr: usize, size: usize)
fn driver_registers() -> DriverRegisterSlice
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.