浏览代码

Add representation of buffer fields

Isaac Woods 3 年之前
父节点
当前提交
7e495f8b57
共有 2 个文件被更改,包括 14 次插入0 次删除
  1. 6 0
      aml/src/test_utils.rs
  2. 8 0
      aml/src/value.rs

+ 6 - 0
aml/src/test_utils.rs

@@ -171,6 +171,12 @@ pub(crate) fn crudely_cmp_values(a: &AmlValue, b: &AmlValue) -> bool {
             AmlValue::Buffer(b) => a == b,
             _ => false,
         },
+        AmlValue::BufferField { buffer_data, offset, length } => match b {
+            AmlValue::BufferField { buffer_data: b_buffer_data, offset: b_offset, length: b_length } => {
+                buffer_data == b_buffer_data && offset == b_offset && length == b_length
+            }
+            _ => false,
+        },
         AmlValue::Processor { id, pblk_address, pblk_len } => match b {
             AmlValue::Processor { id: b_id, pblk_address: b_pblk_address, pblk_len: b_pblk_len } => {
                 id == b_id && pblk_address == b_pblk_address && pblk_len == b_pblk_len

+ 8 - 0
aml/src/value.rs

@@ -198,6 +198,13 @@ pub enum AmlValue {
         code: MethodCode,
     },
     Buffer(Arc<Vec<u8>>),
+    BufferField {
+        buffer_data: Arc<Vec<u8>>,
+        /// In bits.
+        offset: u64,
+        /// In bits.
+        length: u64,
+    },
     Processor {
         id: u8,
         pblk_address: u32,
@@ -245,6 +252,7 @@ impl AmlValue {
             AmlValue::Device => AmlType::Device,
             AmlValue::Method { .. } => AmlType::Method,
             AmlValue::Buffer(_) => AmlType::Buffer,
+            AmlValue::BufferField { .. } => AmlType::BufferField,
             AmlValue::Processor { .. } => AmlType::Processor,
             AmlValue::Mutex { .. } => AmlType::Mutex,
             AmlValue::Package(_) => AmlType::Package,