use uefi::mem::memory_map::*; /// This test imitates a kernel that receives the UEFI memory map as boot /// information. #[test] fn parse_boot_information_efi_mmap() { let desc_size = size_of::(); let mut mmap_source = [ MemoryDescriptor { ty: MemoryType::CONVENTIONAL, phys_start: 0x3000, virt_start: 0x3000, page_count: 1, att: MemoryAttribute::WRITE_BACK, }, MemoryDescriptor { ty: MemoryType::CONVENTIONAL, phys_start: 0x2000, virt_start: 0x2000, page_count: 1, att: MemoryAttribute::WRITE_BACK, }, MemoryDescriptor { ty: MemoryType::CONVENTIONAL, phys_start: 0x1000, virt_start: 0x1000, page_count: 1, att: MemoryAttribute::WRITE_BACK, }, ]; let map_size = mmap_source.len() * desc_size; let meta = MemoryMapMeta { map_size, desc_size, map_key: Default::default(), desc_version: MemoryDescriptor::VERSION, }; let mmap = unsafe { core::slice::from_raw_parts_mut(mmap_source.as_mut_ptr().cast::(), map_size) }; // BOOT INFORMATION END // // BEGIN PARSING // This scenario is similar to what a kernel parsing a boot information // would do. let mmap = MemoryMapRefMut::new(mmap, meta).unwrap(); assert_eq!(mmap.entries().copied().collect::>(), mmap_source); }