Add a global interface

This commit is contained in:
Philipp Oppermann
2019-01-25 13:21:39 +01:00
parent 3574958d5f
commit c1e3fa57c6
4 changed files with 41 additions and 14 deletions

View File

@@ -7,7 +7,15 @@ mod vga_buffer;
#[no_mangle]
pub extern "C" fn _start() -> ! {
vga_buffer::print_something();
use core::fmt::Write;
vga_buffer::WRITER.lock().write_str("Hello again").unwrap();
write!(
vga_buffer::WRITER.lock(),
", some numbers: {} {}",
42,
1.337
)
.unwrap();
loop {}
}

View File

@@ -1,6 +1,16 @@
use core::fmt;
use lazy_static::lazy_static;
use spin::Mutex;
use volatile::Volatile;
lazy_static! {
pub static ref WRITER: Mutex<Writer> = Mutex::new(Writer {
column_position: 0,
color_code: ColorCode::new(Color::Yellow, Color::Black),
buffer: unsafe { &mut *(0xb8000 as *mut Buffer) },
});
}
#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
@@ -113,16 +123,3 @@ impl fmt::Write for Writer {
Ok(())
}
}
pub fn print_something() {
use core::fmt::Write;
let mut writer = Writer {
column_position: 0,
color_code: ColorCode::new(Color::Yellow, Color::Black),
buffer: unsafe { &mut *(0xb8000 as *mut Buffer) },
};
writer.write_byte(b'H');
writer.write_string("ello! ");
write!(writer, "The numbers are {} and {}", 42, 1.0 / 3.0).unwrap();
}