mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Add print! and println! macros and a clear_screen function
This commit is contained in:
@@ -8,16 +8,15 @@ extern crate rlibc;
|
|||||||
extern crate volatile;
|
extern crate volatile;
|
||||||
extern crate spin;
|
extern crate spin;
|
||||||
|
|
||||||
|
#[macro_use]
|
||||||
mod vga_buffer;
|
mod vga_buffer;
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern fn rust_main() {
|
pub extern fn rust_main() {
|
||||||
// ATTENTION: we have a very small stack and no guard page
|
// ATTENTION: we have a very small stack and no guard page
|
||||||
|
|
||||||
use core::fmt::Write;
|
vga_buffer::clear_screen();
|
||||||
|
println!("Hello World{}", "!");
|
||||||
vga_buffer::WRITER.lock().write_str("Hello again");
|
|
||||||
write!(vga_buffer::WRITER.lock(), ", some numbers: {} {}", 42, 1.337);
|
|
||||||
|
|
||||||
loop{}
|
loop{}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,3 +123,22 @@ impl fmt::Write for Writer {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! print {
|
||||||
|
($($arg:tt)*) => ({
|
||||||
|
use core::fmt::Write;
|
||||||
|
let mut writer = $crate::vga_buffer::WRITER.lock();
|
||||||
|
writer.write_fmt(format_args!($($arg)*)).unwrap();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! println {
|
||||||
|
($fmt:expr) => (print!(concat!($fmt, "\n")));
|
||||||
|
($fmt:expr, $($arg:tt)*) => (print!(concat!($fmt, "\n"), $($arg)*));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn clear_screen() {
|
||||||
|
for _ in 0..BUFFER_HEIGHT {
|
||||||
|
println!("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user