@@ -304,10 +304,12 @@ impl MemoryMapBackingMemory {
304
304
Self ( slice)
305
305
}
306
306
307
+ /// INTERNAL, for unit tests.
308
+ ///
307
309
/// Creates an instance from the provided memory, which is not necessarily
308
310
/// on the UEFI heap.
309
311
#[ cfg( test) ]
310
- fn from_slice ( buffer : & mut [ u8 ] ) -> Self {
312
+ pub ( crate ) fn from_slice ( buffer : & mut [ u8 ] ) -> Self {
311
313
let len = buffer. len ( ) ;
312
314
unsafe { Self :: from_raw ( buffer. as_mut_ptr ( ) , len) }
313
315
}
@@ -350,6 +352,10 @@ impl Drop for MemoryMapBackingMemory {
350
352
log:: error!( "Failed to deallocate memory map: {e:?}" ) ;
351
353
}
352
354
} else {
355
+ #[ cfg( test) ]
356
+ log:: debug!( "Boot services are not available in unit tests." ) ;
357
+
358
+ #[ cfg( not( test) ) ]
353
359
log:: debug!( "Boot services are excited. Memory map won't be freed using the UEFI boot services allocator." ) ;
354
360
}
355
361
}
@@ -365,30 +371,13 @@ pub struct MemoryMapOwned {
365
371
}
366
372
367
373
impl MemoryMapOwned {
368
- /// Creates a [`MemoryMapOwned`] from the give initialized memory map behind
369
- /// the buffer and the reported `desc_size` from UEFI.
374
+ /// Creates a [`MemoryMapOwned`] from the given **initialized** memory map
375
+ /// (stored inside the provided buffer) and the corresponding
376
+ /// [`MemoryMapMeta`].
370
377
pub ( crate ) fn from_initialized_mem ( buf : MemoryMapBackingMemory , meta : MemoryMapMeta ) -> Self {
371
378
assert ! ( meta. desc_size >= mem:: size_of:: <MemoryDescriptor >( ) ) ;
372
379
let len = meta. entry_count ( ) ;
373
- MemoryMapOwned {
374
- buf,
375
- meta,
376
- len,
377
- }
378
- }
379
-
380
- #[ cfg( test) ]
381
- pub ( super ) fn from_raw ( buf : & mut [ u8 ] , desc_size : usize ) -> Self {
382
- let mem = MemoryMapBackingMemory :: from_slice ( buf) ;
383
- Self :: from_initialized_mem (
384
- mem,
385
- MemoryMapMeta {
386
- map_size : buf. len ( ) ,
387
- desc_size,
388
- map_key : MemoryMapKey ( 0 ) ,
389
- desc_version : MemoryDescriptor :: VERSION ,
390
- } ,
391
- )
380
+ MemoryMapOwned { buf, meta, len }
392
381
}
393
382
}
394
383
@@ -500,7 +489,7 @@ mod tests {
500
489
fn memory_map_ref ( ) {
501
490
let mut memory = new_mmap_memory ( ) ;
502
491
let ( mmap, meta) = mmap_raw ( & mut memory) ;
503
- let mmap = MemoryMapRef :: new ( mmap, meta, None ) . unwrap ( ) ;
492
+ let mmap = MemoryMapRef :: new ( mmap, meta) . unwrap ( ) ;
504
493
505
494
assert_eq ! ( mmap. entries( ) . count( ) , 3 ) ;
506
495
assert_eq ! (
@@ -515,7 +504,25 @@ mod tests {
515
504
fn memory_map_ref_mut ( ) {
516
505
let mut memory = new_mmap_memory ( ) ;
517
506
let ( mmap, meta) = mmap_raw ( & mut memory) ;
518
- let mut mmap = MemoryMapRefMut :: new ( mmap, meta, None ) . unwrap ( ) ;
507
+ let mut mmap = MemoryMapRefMut :: new ( mmap, meta) . unwrap ( ) ;
508
+
509
+ assert_eq ! ( mmap. entries( ) . count( ) , 3 ) ;
510
+ assert_eq ! (
511
+ mmap. entries( ) . copied( ) . collect:: <Vec <_>>( ) . as_slice( ) ,
512
+ & BASE_MMAP_UNSORTED
513
+ ) ;
514
+ assert ! ( !mmap. is_sorted( ) ) ;
515
+ mmap. sort ( ) ;
516
+ assert ! ( mmap. is_sorted( ) ) ;
517
+ }
518
+
519
+ /// Basic sanity checks for the type [`MemoryMapOwned`].
520
+ #[ test]
521
+ fn memory_map_owned ( ) {
522
+ let mut memory = new_mmap_memory ( ) ;
523
+ let ( mmap, meta) = mmap_raw ( & mut memory) ;
524
+ let mmap = MemoryMapBackingMemory :: from_slice ( mmap) ;
525
+ let mut mmap = MemoryMapOwned :: from_initialized_mem ( mmap, meta) ;
519
526
520
527
assert_eq ! ( mmap. entries( ) . count( ) , 3 ) ;
521
528
assert_eq ! (
0 commit comments