Exit boot services

This commit is contained in:
Philipp Oppermann
2021-04-06 18:16:47 +02:00
parent 0e0d94ca92
commit 17c7f1ed5a

View File

@@ -6,8 +6,15 @@
extern crate alloc; extern crate alloc;
use alloc::vec::Vec; use alloc::vec::Vec;
use core::{alloc::Layout, fmt::Write, panic::PanicInfo}; use core::{alloc::Layout, fmt::Write, mem, panic::PanicInfo, slice};
use uefi::{prelude::entry, proto::console::gop::GraphicsOutput, table::cfg}; use uefi::{
prelude::entry,
proto::console::gop::GraphicsOutput,
table::{
boot::{MemoryDescriptor, MemoryType},
cfg,
},
};
#[entry] #[entry]
fn efi_main( fn efi_main(
@@ -48,6 +55,22 @@ fn efi_main(
) )
.unwrap(); .unwrap();
let mmap_storage = {
let max_mmap_size =
system_table.boot_services().memory_map_size() + 8 * mem::size_of::<MemoryDescriptor>();
let ptr = system_table
.boot_services()
.allocate_pool(MemoryType::LOADER_DATA, max_mmap_size)?
.unwrap();
unsafe { slice::from_raw_parts_mut(ptr, max_mmap_size) }
};
uefi::alloc::exit_boot_services();
let (system_table, memory_map) = system_table
.exit_boot_services(image, mmap_storage)
.unwrap()
.unwrap();
loop {} loop {}
} }