@@ -19,7 +19,7 @@ use uefi::{
1919 } ,
2020 } ,
2121 table:: boot:: { AllocateType , MemoryDescriptor , MemoryType } ,
22- Completion ,
22+ CStr16 ,
2323} ;
2424use x86_64:: {
2525 structures:: paging:: { FrameAllocator , OffsetPageTable , PageTable , PhysFrame , Size4KiB } ,
@@ -59,14 +59,14 @@ fn main_inner(image: Handle, mut st: SystemTable<Boot>) -> Status {
5959 * SYSTEM_TABLE . get ( ) = Some ( st. unsafe_clone ( ) ) ;
6060 }
6161
62- st. stdout ( ) . clear ( ) . unwrap ( ) . unwrap ( ) ;
62+ st. stdout ( ) . clear ( ) . unwrap ( ) ;
6363 writeln ! (
6464 st. stdout( ) ,
6565 "UEFI bootloader started; trying to load kernel"
6666 )
6767 . unwrap ( ) ;
6868
69- let kernel = load_kernel ( image, & st) ;
69+ let kernel = load_kernel ( image, & mut st) ;
7070
7171 let ( framebuffer_addr, framebuffer_info) = init_logger ( & st, kernel. config ) ;
7272
@@ -81,18 +81,17 @@ fn main_inner(image: Handle, mut st: SystemTable<Boot>) -> Status {
8181
8282 let mmap_storage = {
8383 let max_mmap_size =
84- st. boot_services ( ) . memory_map_size ( ) + 8 * mem:: size_of :: < MemoryDescriptor > ( ) ;
84+ st. boot_services ( ) . memory_map_size ( ) . map_size + 8 * mem:: size_of :: < MemoryDescriptor > ( ) ;
8585 let ptr = st
8686 . boot_services ( )
87- . allocate_pool ( MemoryType :: LOADER_DATA , max_mmap_size) ?
88- . log ( ) ;
87+ . allocate_pool ( MemoryType :: LOADER_DATA , max_mmap_size) ?;
8988 unsafe { slice:: from_raw_parts_mut ( ptr, max_mmap_size) }
9089 } ;
9190
9291 log:: trace!( "exiting boot services" ) ;
9392 let ( system_table, memory_map) = st
9493 . exit_boot_services ( image, mmap_storage)
95- . expect_success ( "Failed to exit boot services" ) ;
94+ . expect ( "Failed to exit boot services" ) ;
9695
9796 let mut frame_allocator =
9897 LegacyFrameAllocator :: new ( memory_map. copied ( ) . map ( UefiMemoryDescriptor ) ) ;
@@ -127,38 +126,38 @@ fn load_kernel(image: Handle, st: &SystemTable<Boot>) -> Kernel<'static> {
127126 let ref this = st. boot_services ( ) ;
128127 let loaded_image = this
129128 . handle_protocol :: < LoadedImage > ( image)
130- . expect_success ( "Failed to retrieve `LoadedImage` protocol from handle" ) ;
129+ . expect ( "Failed to retrieve `LoadedImage` protocol from handle" ) ;
131130 let loaded_image = unsafe { & * loaded_image. get ( ) } ;
132131
133132 let device_handle = loaded_image. device ( ) ;
134133
135134 let device_path = this
136135 . handle_protocol :: < DevicePath > ( device_handle)
137- . expect_success ( "Failed to retrieve `DevicePath` protocol from image's device handle" ) ;
136+ . expect ( "Failed to retrieve `DevicePath` protocol from image's device handle" ) ;
138137 let mut device_path = unsafe { & * device_path. get ( ) } ;
139138
140139 let device_handle = this
141140 . locate_device_path :: < SimpleFileSystem > ( & mut device_path)
142- . expect_success ( "Failed to locate `SimpleFileSystem` protocol on device path" ) ;
141+ . expect ( "Failed to locate `SimpleFileSystem` protocol on device path" ) ;
143142
144143 this. handle_protocol :: < SimpleFileSystem > ( device_handle)
145144 }
146- . unwrap ( )
147145 . unwrap ( ) ;
148146 let file_system = unsafe { & mut * file_system_raw. get ( ) } ;
149147
150- let mut root = file_system. open_volume ( ) . unwrap ( ) . unwrap ( ) ;
148+ let mut root = file_system. open_volume ( ) . unwrap ( ) ;
149+ let mut buf = [ 0 ; 14 * 2 ] ;
150+ let filename = CStr16 :: from_str_with_buf ( "kernel-x86_64" , & mut buf) . unwrap ( ) ;
151151 let kernel_file_handle = root
152- . open ( "kernel-x86_64" , FileMode :: Read , FileAttribute :: empty ( ) )
153- . expect ( "Failed to load kernel (expected file named `kernel-x86_64`)" )
154- . unwrap ( ) ;
155- let mut kernel_file = match kernel_file_handle. into_type ( ) . unwrap ( ) . unwrap ( ) {
152+ . open ( filename, FileMode :: Read , FileAttribute :: empty ( ) )
153+ . expect ( "Failed to load kernel (expected file named `kernel-x86_64`)" ) ;
154+ let mut kernel_file = match kernel_file_handle. into_type ( ) . unwrap ( ) {
156155 uefi:: proto:: media:: file:: FileType :: Regular ( f) => f,
157156 uefi:: proto:: media:: file:: FileType :: Dir ( _) => panic ! ( ) ,
158157 } ;
159158
160159 let mut buf = [ 0 ; 500 ] ;
161- let kernel_info: & mut FileInfo = kernel_file. get_info ( & mut buf) . unwrap ( ) . unwrap ( ) ;
160+ let kernel_info: & mut FileInfo = kernel_file. get_info ( & mut buf) . unwrap ( ) ;
162161 let kernel_size = usize:: try_from ( kernel_info. file_size ( ) ) . unwrap ( ) ;
163162
164163 let kernel_ptr = st
@@ -168,11 +167,10 @@ fn load_kernel(image: Handle, st: &SystemTable<Boot>) -> Kernel<'static> {
168167 MemoryType :: LOADER_DATA ,
169168 ( ( kernel_size - 1 ) / 4096 ) + 1 ,
170169 )
171- . unwrap ( )
172170 . unwrap ( ) as * mut u8 ;
173171 unsafe { ptr:: write_bytes ( kernel_ptr, 0 , kernel_size) } ;
174172 let kernel_slice = unsafe { slice:: from_raw_parts_mut ( kernel_ptr, kernel_size) } ;
175- kernel_file. read ( kernel_slice) . unwrap ( ) . unwrap ( ) ;
173+ kernel_file. read ( kernel_slice) . unwrap ( ) ;
176174
177175 Kernel :: parse ( kernel_slice)
178176}
@@ -247,11 +245,11 @@ fn init_logger(st: &SystemTable<Boot>, config: BootloaderConfig) -> (PhysAddr, F
247245 let gop = st
248246 . boot_services ( )
249247 . locate_protocol :: < GraphicsOutput > ( )
250- . expect_success ( "failed to locate gop" ) ;
248+ . expect ( "failed to locate gop" ) ;
251249 let gop = unsafe { & mut * gop. get ( ) } ;
252250
253251 let mode = {
254- let modes = gop. modes ( ) . map ( Completion :: unwrap ) ;
252+ let modes = gop. modes ( ) ;
255253 match (
256254 config
257255 . frame_buffer
@@ -275,7 +273,7 @@ fn init_logger(st: &SystemTable<Boot>, config: BootloaderConfig) -> (PhysAddr, F
275273 } ;
276274 if let Some ( mode) = mode {
277275 gop. set_mode ( & mode)
278- . expect_success ( "Failed to apply the desired display mode" ) ;
276+ . expect ( "Failed to apply the desired display mode" ) ;
279277 }
280278
281279 let mode_info = gop. current_mode_info ( ) ;
0 commit comments