@@ -300,10 +300,12 @@ impl MemoryMapBackingMemory {
300300 Self ( slice)
301301 }
302302
303+ /// INTERNAL, for unit tests.
304+ ///
303305 /// Creates an instance from the provided memory, which is not necessarily
304306 /// on the UEFI heap.
305307 #[ cfg( test) ]
306- fn from_slice ( buffer : & mut [ u8 ] ) -> Self {
308+ pub ( crate ) fn from_slice ( buffer : & mut [ u8 ] ) -> Self {
307309 let len = buffer. len ( ) ;
308310 unsafe { Self :: from_raw ( buffer. as_mut_ptr ( ) , len) }
309311 }
@@ -346,6 +348,10 @@ impl Drop for MemoryMapBackingMemory {
346348 log:: error!( "Failed to deallocate memory map: {e:?}" ) ;
347349 }
348350 } else {
351+ #[ cfg( test) ]
352+ log:: debug!( "Boot services are not available in unit tests." ) ;
353+
354+ #[ cfg( not( test) ) ]
349355 log:: debug!( "Boot services are excited. Memory map won't be freed using the UEFI boot services allocator." ) ;
350356 }
351357 }
@@ -361,30 +367,13 @@ pub struct MemoryMapOwned {
361367}
362368
363369impl 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`].
366373 pub ( crate ) fn from_initialized_mem ( buf : MemoryMapBackingMemory , meta : MemoryMapMeta ) -> Self {
367374 assert ! ( meta. desc_size >= mem:: size_of:: <MemoryDescriptor >( ) ) ;
368375 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 }
388377 }
389378}
390379
@@ -496,7 +485,7 @@ mod tests {
496485 fn memory_map_ref ( ) {
497486 let mut memory = new_mmap_memory ( ) ;
498487 let ( mmap, meta) = mmap_raw ( & mut memory) ;
499- let mmap = MemoryMapRef :: new ( mmap, meta, None ) . unwrap ( ) ;
488+ let mmap = MemoryMapRef :: new ( mmap, meta) . unwrap ( ) ;
500489
501490 assert_eq ! ( mmap. entries( ) . count( ) , 3 ) ;
502491 assert_eq ! (
@@ -511,7 +500,25 @@ mod tests {
511500 fn memory_map_ref_mut ( ) {
512501 let mut memory = new_mmap_memory ( ) ;
513502 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) ;
515522
516523 assert_eq ! ( mmap. entries( ) . count( ) , 3 ) ;
517524 assert_eq ! (
0 commit comments