@@ -99,19 +99,20 @@ impl MemoryMapMeta {
99
99
}
100
100
}
101
101
102
+ /// Comprehensive unit test of the memory map functionality with the simplified
103
+ /// data. Here, `desc_size` equals `size_of::<MemoryDescriptor`.
102
104
#[ cfg( test) ]
103
105
mod tests_mmap_artificial {
104
106
use super :: * ;
105
107
use core:: mem:: { size_of, size_of_val} ;
106
108
107
- fn buffer_to_map ( buffer : & mut [ MemoryDescriptor ] ) -> MemoryMapOwned {
109
+ fn buffer_to_map ( buffer : & mut [ MemoryDescriptor ] ) -> MemoryMapRefMut {
108
110
let mmap_len = size_of_val ( buffer) ;
109
111
let mmap = {
110
112
unsafe { core:: slice:: from_raw_parts_mut ( buffer. as_mut_ptr ( ) as * mut u8 , mmap_len) }
111
113
} ;
112
114
113
- let mmap = MemoryMapBackingMemory :: from_slice ( mmap) ;
114
- MemoryMapOwned :: from_initialized_mem (
115
+ MemoryMapRefMut :: new (
115
116
mmap,
116
117
MemoryMapMeta {
117
118
map_size : mmap_len,
@@ -120,6 +121,7 @@ mod tests_mmap_artificial {
120
121
desc_version : MemoryDescriptor :: VERSION ,
121
122
} ,
122
123
)
124
+ . unwrap ( )
123
125
}
124
126
125
127
#[ test]
@@ -156,7 +158,7 @@ mod tests_mmap_artificial {
156
158
mem_map. sort ( ) ;
157
159
158
160
if !is_sorted ( & mem_map. entries ( ) ) {
159
- panic ! ( "mem_map is not sorted: {}" , mem_map) ;
161
+ panic ! ( "mem_map is not sorted: {:? }" , mem_map) ;
160
162
}
161
163
}
162
164
@@ -209,17 +211,6 @@ mod tests_mmap_artificial {
209
211
assert_ne ! ( * desc, BUFFER [ 2 ] ) ;
210
212
}
211
213
212
- // Added for debug purposes on test failure
213
- impl core:: fmt:: Display for MemoryMapOwned {
214
- fn fmt ( & self , f : & mut core:: fmt:: Formatter < ' _ > ) -> core:: fmt:: Result {
215
- writeln ! ( f) ?;
216
- for desc in self . entries ( ) {
217
- writeln ! ( f, "{:?}" , desc) ?;
218
- }
219
- Ok ( ( ) )
220
- }
221
- }
222
-
223
214
fn is_sorted ( iter : & MemoryMapIter ) -> bool {
224
215
let mut iter = iter. clone ( ) ;
225
216
let mut curr_start;
@@ -240,6 +231,9 @@ mod tests_mmap_artificial {
240
231
}
241
232
}
242
233
234
+ /// Comprehensive unit test of the memory map functionality with the data from a
235
+ /// real UEFI memory map. The important property that we test here is that
236
+ /// the reported `desc_size` doesn't equal `size_of::<MemoryDescriptor`.
243
237
#[ cfg( test) ]
244
238
mod tests_mmap_real {
245
239
use super :: * ;
@@ -266,9 +260,11 @@ mod tests_mmap_real {
266
260
let mut buf = MMAP_RAW ;
267
261
let buf =
268
262
unsafe { slice:: from_raw_parts_mut ( buf. as_mut_ptr ( ) . cast :: < u8 > ( ) , MMAP_META . map_size ) } ;
269
- let buf = MemoryMapBackingMemory :: from_slice ( buf) ;
270
- let mut mmap = MemoryMapOwned :: from_initialized_mem ( buf, MMAP_META ) ;
263
+ let mut mmap = MemoryMapRefMut :: new ( buf, MMAP_META ) . unwrap ( ) ;
264
+
265
+ assert ! ( mmap. is_sorted( ) ) ;
271
266
mmap. sort ( ) ;
267
+ assert ! ( mmap. is_sorted( ) ) ;
272
268
273
269
let entries = mmap. entries ( ) . copied ( ) . collect :: < Vec < _ > > ( ) ;
274
270
0 commit comments