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