summaryrefslogtreecommitdiff
path: root/kernel/src/init
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-09-06 18:07:30 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-09-06 18:07:30 +0800
commit4820b2dd73543a6fbd5db547d009529d0fe11ccd (patch)
tree86243e91da43f575a807f43f1ff4c359cf72e159 /kernel/src/init
parent9c887d5428043bab7af259386d9bda5dd1fd59f8 (diff)
new: earlyprintk
Diffstat (limited to 'kernel/src/init')
-rw-r--r--kernel/src/init/acpi.rs0
-rw-r--r--kernel/src/init/earlyprintk.rs24
2 files changed, 24 insertions, 0 deletions
diff --git a/kernel/src/init/acpi.rs b/kernel/src/init/acpi.rs
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/kernel/src/init/acpi.rs
diff --git a/kernel/src/init/earlyprintk.rs b/kernel/src/init/earlyprintk.rs
new file mode 100644
index 0000000..01c50fa
--- /dev/null
+++ b/kernel/src/init/earlyprintk.rs
@@ -0,0 +1,24 @@
+use spin::{lazylock::LazyLock, mutex::Mutex};
+
+use crate::io::output::serial::uart_16550::{SerialPortBitMask, Uart16550};
+
+// TODO: use linkme instead
+pub static EARLY_PRINTK_SERIAL: LazyLock<Mutex<Uart16550>> = LazyLock::new(|| {
+ Mutex::new(unsafe { Uart16550::init(SerialPortBitMask::COM1, [const { None }; 4]).unwrap() })
+});
+
+#[macro_export]
+macro_rules! printk {
+ ($($arg:tt)*) => ({
+ use ::core::fmt::Write;
+ write!($crate::init::earlyprintk::EARLY_PRINTK_SERIAL.lock().coms[0].as_mut().unwrap(), $($arg)*)
+ });
+}
+
+#[macro_export]
+macro_rules! printkln {
+ ($($arg:tt)*) => ({
+ use ::core::fmt::Write;
+ writeln!($crate::init::earlyprintk::EARLY_PRINTK_SERIAL.lock().coms[0].as_mut().unwrap(), $($arg)*)
+ });
+}