소스 검색

Add the groundwork for a Handler trait

Isaac Woods 5 년 전
부모
커밋
8bc519cc80
1개의 변경된 파일24개의 추가작업 그리고 0개의 파일을 삭제
  1. 24 0
      aml/src/lib.rs

+ 24 - 0
aml/src/lib.rs

@@ -373,6 +373,30 @@ impl AmlContext {
     }
 }
 
+pub trait Handler {
+    fn read_u8(&self, address: usize) -> u8;
+    fn read_u16(&self, address: usize) -> u16;
+    fn read_u32(&self, address: usize) -> u32;
+    fn read_u64(&self, address: usize) -> u64;
+
+    fn write_u8(&mut self, address: usize, value: u8);
+    fn write_u16(&mut self, address: usize, value: u16);
+    fn write_u32(&mut self, address: usize, value: u32);
+    fn write_u64(&mut self, address: usize, value: u64);
+
+    fn read_io_u8(&self, port: u16) -> u8;
+    fn read_io_u16(&self, port: u16) -> u16;
+    fn read_io_u32(&self, port: u16) -> u32;
+    fn read_io_u64(&self, port: u16) -> u64;
+
+    fn write_io_u8(&self, port: u16, value: u8);
+    fn write_io_u16(&self, port: u16, value: u16);
+    fn write_io_u32(&self, port: u16, value: u32);
+    fn write_io_u64(&self, port: u16, value: u64);
+
+    // TODO: PCI config space accessing functions
+}
+
 #[derive(Clone, Debug, PartialEq, Eq)]
 pub enum AmlError {
     /*