@@ -31,6 +31,12 @@ pub struct PGD {
3131 puds : Vec < Option < PUD > > ,
3232}
3333
34+ impl Default for PGD {
35+ fn default ( ) -> Self {
36+ Self :: new ( )
37+ }
38+ }
39+
3440impl PGD {
3541 pub fn new ( ) -> Self {
3642 PGD {
@@ -40,10 +46,10 @@ impl PGD {
4046
4147 pub fn recurse ( & mut self , mut curr_offset : u64 , buffer : & mut Vec < u8 > ) -> u64 {
4248 let mut offset_table: [ u64 ; 512 ] = [ u64:: MAX ; 512 ] ;
43- for i in 0 .. 512 {
49+ for ( i , entry ) in offset_table . iter_mut ( ) . enumerate ( ) {
4450 if let Some ( pud) = & mut self . puds [ i] {
4551 curr_offset = pud. recurse ( curr_offset, buffer) ;
46- offset_table [ i ] = curr_offset - ( 512 * 8 ) ;
52+ * entry = curr_offset - ( 512 * 8 ) ;
4753 }
4854 }
4955
@@ -85,7 +91,7 @@ impl PGD {
8591 child_size += pud. as_ref ( ) . unwrap ( ) . get_size ( ) ;
8692 }
8793 }
88- return ( 512 * 8 ) + child_size;
94+ ( 512 * 8 ) + child_size
8995 }
9096}
9197
@@ -103,10 +109,10 @@ impl PUD {
103109
104110 fn recurse ( & mut self , mut curr_offset : u64 , buffer : & mut Vec < u8 > ) -> u64 {
105111 let mut offset_table: [ u64 ; 512 ] = [ u64:: MAX ; 512 ] ;
106- for i in 0 .. 512 {
112+ for ( i , entry ) in offset_table . iter_mut ( ) . enumerate ( ) {
107113 if let Some ( dir) = & mut self . dirs [ i] {
108114 curr_offset = dir. recurse ( curr_offset, buffer) ;
109- offset_table [ i ] = curr_offset - ( 512 * 8 ) ;
115+ * entry = curr_offset - ( 512 * 8 ) ;
110116 }
111117 }
112118
@@ -134,7 +140,7 @@ impl PUD {
134140 child_size += dir. as_ref ( ) . unwrap ( ) . get_size ( ) ;
135141 }
136142 }
137- return ( 512 * 8 ) + child_size;
143+ ( 512 * 8 ) + child_size
138144 }
139145}
140146
@@ -158,17 +164,17 @@ impl DIR {
158164
159165 fn recurse ( & mut self , mut curr_offset : u64 , buffer : & mut Vec < u8 > ) -> u64 {
160166 let mut offset_table: [ u64 ; 512 ] = [ u64:: MAX ; 512 ] ;
161- for i in 0 .. 512 {
167+ for ( i , dir_entry ) in offset_table . iter_mut ( ) . enumerate ( ) {
162168 if let Some ( entry) = & mut self . entries [ i] {
163169 match entry {
164170 DirEntry :: PageTable ( x) => {
165171 curr_offset = x. recurse ( curr_offset, buffer) ;
166- offset_table [ i ] = curr_offset - ( 512 * 8 ) ;
172+ * dir_entry = curr_offset - ( 512 * 8 ) ;
167173 }
168174 DirEntry :: LargePage ( x) => {
169175 // curr_offset += 8;
170176 // we mark the top bit to signal to the pd that this is a large page
171- offset_table [ i ] = * x | ( 1 << 63 ) ;
177+ * dir_entry = * x | ( 1 << 63 ) ;
172178 }
173179 }
174180 }
@@ -208,14 +214,11 @@ impl DIR {
208214 fn get_size ( & self ) -> u64 {
209215 let mut child_size = 0 ;
210216 for pt in & self . entries {
211- match pt {
212- Some ( DirEntry :: PageTable ( x) ) => {
213- child_size += x. get_size ( ) ;
214- }
215- _ => { }
217+ if let Some ( DirEntry :: PageTable ( x) ) = pt {
218+ child_size += x. get_size ( ) ;
216219 }
217220 }
218- return ( 512 * 8 ) + child_size;
221+ ( 512 * 8 ) + child_size
219222 }
220223}
221224
@@ -248,7 +251,7 @@ impl PT {
248251 }
249252
250253 fn get_size ( & self ) -> u64 {
251- return 512 * 8 ;
254+ 512 * 8
252255 }
253256}
254257
0 commit comments