11// SPDX-License-Identifier: Apache-2.0
22// Copyright 2020 Google LLC
33
4- use pvh:: start_info:: { MemmapTableEntry , StartInfo } ;
4+ use pvh:: start_info:: {
5+ reader:: { MemMap , StartInfoReader } ,
6+ MemmapTableEntry ,
7+ } ;
58
69use crate :: {
710 bootinfo:: { EntryType , Info , MemoryEntry } ,
8- common,
911 layout:: MemoryDescriptor ,
1012} ;
1113
@@ -19,27 +21,21 @@ impl From<MemmapTableEntry> for MemoryEntry {
1921 }
2022}
2123
22- impl Info for StartInfo {
24+ impl < M : MemMap > Info for StartInfoReader < ' _ , M > {
2325 fn name ( & self ) -> & str {
2426 "PVH Boot Protocol"
2527 }
2628 fn rsdp_addr ( & self ) -> Option < u64 > {
27- Some ( self . rsdp_paddr )
29+ Some ( self . raw ( ) . rsdp_paddr )
2830 }
2931 fn cmdline ( & self ) -> & [ u8 ] {
30- unsafe { common :: from_cstring ( self . cmdline_paddr ) }
32+ self . cmdline ( ) . unwrap_or_default ( ) . to_bytes ( )
3133 }
3234 fn num_entries ( & self ) -> usize {
33- // memmap_paddr and memmap_entries only exist in version 1 or later
34- if self . version < 1 || self . memmap_paddr == 0 {
35- return 0 ;
36- }
37- self . memmap_entries as usize
35+ self . memmap ( ) . len ( )
3836 }
3937 fn entry ( & self , idx : usize ) -> MemoryEntry {
40- assert ! ( idx < self . num_entries( ) ) ;
41- let ptr = self . memmap_paddr as * const MemmapTableEntry ;
42- let entry = unsafe { * ptr. add ( idx) } ;
38+ let entry = self . memmap ( ) [ idx] ;
4339 MemoryEntry :: from ( entry)
4440 }
4541 fn kernel_load_addr ( & self ) -> u64 {
0 commit comments