@@ -20,7 +20,7 @@ pub mod resource;
20
20
21
21
pub use pci_types:: PciAddress ;
22
22
23
- use crate :: { AcpiError , AcpiHandler , AcpiTables , AmlTable , sdt:: SdtHeader } ;
23
+ use crate :: { AcpiError , AcpiTables , AmlTable , RegionMapper , sdt:: SdtHeader } ;
24
24
use alloc:: {
25
25
boxed:: Box ,
26
26
collections:: btree_map:: BTreeMap ,
@@ -86,23 +86,21 @@ where
86
86
87
87
/// Construct a new `Interpreter` with the given set of ACPI tables. This will automatically
88
88
/// load the DSDT and any SSDTs in the supplied [`AcpiTables`].
89
- // TODO: maybe merge handler types? Maybe make one a supertrait of the other?
90
- pub fn new_from_tables < AH : AcpiHandler > (
91
- acpi_handler : AH ,
92
- aml_handler : H ,
93
- tables : & AcpiTables < AH > ,
89
+ pub fn new_from_tables < M : RegionMapper > (
90
+ mapper : M ,
91
+ handler : H ,
92
+ tables : & AcpiTables < M > ,
94
93
) -> Result < Interpreter < H > , AcpiError > {
95
- fn load_table < H : Handler , AH : AcpiHandler > (
94
+ fn load_table < M : RegionMapper , H : Handler > (
96
95
interpreter : & Interpreter < H > ,
97
- acpi_handler : & AH ,
96
+ mapper : & M ,
98
97
table : AmlTable ,
99
98
) -> Result < ( ) , AcpiError > {
100
- let mapping = unsafe {
101
- acpi_handler. map_physical_region :: < SdtHeader > ( table. phys_address , table. length as usize )
102
- } ;
99
+ let mapping =
100
+ unsafe { mapper. map_physical_region :: < SdtHeader > ( table. phys_address , table. length as usize ) } ;
103
101
let stream = unsafe {
104
102
slice:: from_raw_parts (
105
- mapping. virtual_start ( ) . as_ptr ( ) . byte_add ( mem:: size_of :: < SdtHeader > ( ) ) as * const u8 ,
103
+ mapping. virtual_start . as_ptr ( ) . byte_add ( mem:: size_of :: < SdtHeader > ( ) ) as * const u8 ,
106
104
table. length as usize - mem:: size_of :: < SdtHeader > ( ) ,
107
105
)
108
106
} ;
@@ -111,11 +109,11 @@ where
111
109
}
112
110
113
111
let dsdt = tables. dsdt ( ) ?;
114
- let interpreter = Interpreter :: new ( aml_handler , dsdt. revision ) ;
115
- load_table ( & interpreter, & acpi_handler , dsdt) ?;
112
+ let interpreter = Interpreter :: new ( handler , dsdt. revision ) ;
113
+ load_table ( & interpreter, & mapper , dsdt) ?;
116
114
117
115
for ssdt in tables. ssdts ( ) {
118
- load_table ( & interpreter, & acpi_handler , ssdt) ?;
116
+ load_table ( & interpreter, & mapper , ssdt) ?;
119
117
}
120
118
121
119
Ok ( interpreter)
0 commit comments