瀏覽代碼

Add the groundwork for a Handler trait

Isaac Woods 4 年之前
父節點
當前提交
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 {
     /*