39 lines
948 B
Rust
39 lines
948 B
Rust
#![feature(trait_alias)]
|
|
#![no_std]
|
|
#![allow(clippy::new_without_default)]
|
|
|
|
extern crate alloc;
|
|
|
|
pub mod bus;
|
|
pub mod clock;
|
|
pub mod device;
|
|
pub mod interrupt;
|
|
pub mod serial;
|
|
pub mod timer;
|
|
|
|
pub mod dma;
|
|
|
|
use device::Device;
|
|
use yggdrasil_abi::error::Error;
|
|
|
|
pub trait CpuBringupDevice: Device {
|
|
/// Starts a CPU with given index, providing it with some argument value and instruction
|
|
/// pointer from which its execution should begin.
|
|
///
|
|
/// # Safety
|
|
///
|
|
/// This function is unsafe because it can have unexpected effects on the system state if
|
|
/// misused.
|
|
unsafe fn start_cpu(&self, id: usize, ip: usize, arg0: usize) -> Result<(), Error>;
|
|
}
|
|
|
|
pub trait ResetDevice: Device {
|
|
/// Performs a system reset.
|
|
///
|
|
/// # Safety
|
|
///
|
|
/// The kernel must ensure it is actually safe to perform a reset, no critical operations
|
|
/// are aborted and no data is lost.
|
|
unsafe fn reset(&self) -> !;
|
|
}
|