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