use uefi::mem::memory_map::*;
#[test]
fn parse_boot_information_efi_mmap() {
let desc_size = size_of::<MemoryDescriptor>();
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::<u8>(), map_size) };
let mmap = MemoryMapRefMut::new(mmap, meta).unwrap();
assert_eq!(mmap.entries().copied().collect::<Vec<_>>(), mmap_source);
}