kernel: logging
This commit is contained in:
parent
723063d31e
commit
8f441135e0
7
Cargo.lock
generated
7
Cargo.lock
generated
|
|
@ -20,12 +20,19 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"bit_field",
|
||||
"bitflags",
|
||||
"log",
|
||||
"plain",
|
||||
"rbtree",
|
||||
"rustc-demangle",
|
||||
"seq-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
|
||||
|
||||
[[package]]
|
||||
name = "plain"
|
||||
version = "0.2.3"
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ harness = false
|
|||
[dependencies]
|
||||
bit_field = "0.10.3"
|
||||
bitflags = "2.13.1"
|
||||
log = { version = "0.4", default-features = false }
|
||||
seq-macro = "0.3.6"
|
||||
|
||||
rbtree = { path = "../crates/rbtree" }
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ extern crate alloc;
|
|||
|
||||
pub mod bits;
|
||||
pub mod limine;
|
||||
pub mod logger;
|
||||
pub mod serial;
|
||||
pub mod sync;
|
||||
pub mod x86_64;
|
||||
|
|
|
|||
25
kernel/src/logger.rs
Normal file
25
kernel/src/logger.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use log::{LevelFilter, Log, Metadata, Record};
|
||||
|
||||
use crate::serial_println;
|
||||
|
||||
pub struct SerialLogger;
|
||||
|
||||
impl Log for SerialLogger {
|
||||
fn enabled(&self, metadata: &Metadata<'_>) -> bool {
|
||||
metadata.level() <= log::max_level()
|
||||
}
|
||||
|
||||
fn log(&self, record: &Record<'_>) {
|
||||
if self.enabled(record.metadata()) {
|
||||
serial_println!("[{:}] {}", record.level(), record.args());
|
||||
}
|
||||
}
|
||||
|
||||
fn flush(&self) {}
|
||||
}
|
||||
|
||||
pub fn init(max_level: LevelFilter) {
|
||||
static LOGGER: SerialLogger = SerialLogger;
|
||||
log::set_logger(&LOGGER).expect("logger already initialized");
|
||||
log::set_max_level(max_level);
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ static GDT: LazyLock<GlobalDescriptorTable> = LazyLock::new(GlobalDescriptorTabl
|
|||
/// Entry point for the kernel
|
||||
#[unsafe(no_mangle)]
|
||||
extern "C" fn _start() -> ! {
|
||||
kernel::serial_println!("Hello, world!");
|
||||
kernel::logger::init(log::LevelFilter::Trace);
|
||||
assert!(limine_requests::LIMINE_BASE_REVISION.is_supported());
|
||||
|
||||
_ = kernel::memory::HHDM_BASE
|
||||
|
|
@ -56,7 +56,6 @@ extern "C" fn _start() -> ! {
|
|||
GDT.load();
|
||||
IDT.load();
|
||||
|
||||
unsafe { (0 as *mut u8).write_volatile(0x42) };
|
||||
|
||||
kernel::serial_println!("entry point: 0x{:x}", _start as *const () as usize);
|
||||
kernel::serial_println!(
|
||||
|
|
|
|||
Loading…
Reference in a new issue