mirror of
https://github.com/rcore-os/rCore.git
synced 2024-11-22 08:06:17 +04:00
Use volatile writes for printing to screen
This commit is contained in:
parent
6aa3f67331
commit
0ed21fb943
@ -8,3 +8,4 @@ crate-type = ["staticlib"]
|
||||
|
||||
[dependencies]
|
||||
rlibc = "1.0"
|
||||
volatile = "0.1.0"
|
||||
|
@ -4,6 +4,7 @@
|
||||
#![no_std]
|
||||
|
||||
extern crate rlibc;
|
||||
extern crate volatile;
|
||||
|
||||
mod vga_buffer;
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
use core::ptr::Unique;
|
||||
use volatile::Volatile;
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
@ -42,7 +43,7 @@ const BUFFER_HEIGHT: usize = 25;
|
||||
const BUFFER_WIDTH: usize = 80;
|
||||
|
||||
struct Buffer {
|
||||
chars: [[ScreenChar; BUFFER_WIDTH]; BUFFER_HEIGHT],
|
||||
chars: [[Volatile<ScreenChar>; BUFFER_WIDTH]; BUFFER_HEIGHT],
|
||||
}
|
||||
|
||||
pub struct Writer {
|
||||
@ -64,10 +65,10 @@ impl Writer {
|
||||
let col = self.column_position;
|
||||
|
||||
let color_code = self.color_code;
|
||||
self.buffer().chars[row][col] = ScreenChar {
|
||||
self.buffer().chars[row][col].write(ScreenChar {
|
||||
ascii_character: byte,
|
||||
color_code: color_code,
|
||||
};
|
||||
});
|
||||
self.column_position += 1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user