kernel/drivers/tty/
uart.rs1#[cfg(target_arch = "x86_64")]
7pub use crate::arch::x86_64::drivers::tty::uart::Uart;
8
9pub trait UartOps {
11 fn init(&mut self) -> UartResult<()>;
13
14 fn read_byte(&mut self) -> UartResult<u8>;
16
17 fn write_byte(&mut self, byte: u8) -> UartResult<()>;
19
20 fn write_string(&mut self, string: &str) -> UartResult<()> {
23 for byte in string.bytes() {
24 self.write_byte(byte)?;
25 }
26 Ok(())
27 }
28}
29
30pub type UartResult<T> = Result<T, UartError>;
31pub enum UartError {
32 AlreadyInitialized,
33 NotInitialized
34}
35impl UartError {
36 pub fn as_str(&self) -> &str {
38 use UartError::*;
39 match self {
40 AlreadyInitialized => "AlreadyInitialized",
41 NotInitialized => "NotInitialized"
42 }
43 }
44}