Remove volatile crate (#219)

* Remove volatile crate

* Fix whitespace

* Remove mut in read
This commit is contained in:
Vincent Ollivier 2021-07-27 10:20:13 +02:00 committed by GitHub
parent 68b34e16b0
commit 334fcff978
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 18 deletions

9
Cargo.lock generated
View File

@ -237,7 +237,6 @@ dependencies = [
"spin 0.9.2",
"time",
"uart_16550",
"volatile 0.2.7",
"vte",
"x86_64",
]
@ -503,12 +502,6 @@ version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
[[package]]
name = "volatile"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6b06ad3ed06fef1713569d547cdbdb439eafed76341820fb0e0344f29a41945"
[[package]]
name = "volatile"
version = "0.4.4"
@ -544,5 +537,5 @@ checksum = "d95947de37ad0d2d9a4a4dd22e0d042e034e5cbd7ab53edbca0d8035e0a6a64d"
dependencies = [
"bit_field 0.9.0",
"bitflags",
"volatile 0.4.4",
"volatile",
]

View File

@ -41,7 +41,6 @@ smoltcp = { version = "0.7.5", default-features = false, features = ["alloc", "e
spin = "0.9.2"
time = { version = "0.2.27", default-features = false }
uart_16550 = "0.2.15"
volatile = "0.2.6"
vte = "0.10.1"
x86_64 = "0.14.4"

View File

@ -6,7 +6,6 @@ use core::fmt;
use core::fmt::Write;
use lazy_static::lazy_static;
use spin::Mutex;
use volatile::Volatile;
use vte::{Params, Parser, Perform};
use x86_64::instructions::interrupts;
use x86_64::instructions::port::Port;
@ -49,7 +48,7 @@ const BUFFER_WIDTH: usize = 80;
#[repr(transparent)]
struct Buffer {
chars: [[Volatile<ScreenChar>; BUFFER_WIDTH]; BUFFER_HEIGHT],
chars: [[ScreenChar; BUFFER_WIDTH]; BUFFER_HEIGHT],
}
pub struct Writer {
@ -115,13 +114,15 @@ impl Writer {
0x08 => { // Backspace
if self.writer[0] > 0 {
self.writer[0] -= 1;
let blank = ScreenChar {
let c = ScreenChar {
ascii_code: b' ',
color_code: self.color_code,
};
let x = self.writer[0];
let y = self.writer[1];
self.buffer.chars[y][x].write(blank);
unsafe {
core::ptr::write_volatile(&mut self.buffer.chars[y][x], c);
}
}
},
byte => {
@ -133,7 +134,10 @@ impl Writer {
let y = self.writer[1];
let ascii_code = if is_printable(byte) { byte } else { UNPRINTABLE };
let color_code = self.color_code;
self.buffer.chars[y][x].write(ScreenChar { ascii_code, color_code });
let c = ScreenChar { ascii_code, color_code };
unsafe {
core::ptr::write_volatile(&mut self.buffer.chars[y][x], c);
}
self.writer[0] += 1;
}
}
@ -145,8 +149,10 @@ impl Writer {
} else {
for y in 1..BUFFER_HEIGHT {
for x in 0..BUFFER_WIDTH {
let character = self.buffer.chars[y][x].read();
self.buffer.chars[y - 1][x].write(character);
unsafe {
let c = core::ptr::read_volatile(&self.buffer.chars[y][x]);
core::ptr::write_volatile(&mut self.buffer.chars[y - 1][x], c);
}
}
}
self.clear_row_after(0, BUFFER_HEIGHT - 1);
@ -155,12 +161,14 @@ impl Writer {
}
fn clear_row_after(&mut self, x: usize, y: usize) {
let blank = ScreenChar {
let c = ScreenChar {
ascii_code: b' ',
color_code: self.color_code,
};
for i in x..BUFFER_WIDTH {
self.buffer.chars[y][i].write(blank);
unsafe {
core::ptr::write_volatile(&mut self.buffer.chars[y][i], c);
}
}
}