@@ -36,7 +36,7 @@ pub const PHYSICAL_MEMORY_END: usize = 0x88000000;
36
36
// src/consts.rs
37
37
38
38
pub const KERNEL_BEGIN_PADDR : usize = 0x80200000 ;
39
- pub const KERNEL_BEGIN_VADDR : usize = 0xffffffffc0200000 ;
39
+ pub const KERNEL_BEGIN_VADDR : usize = 0x80200000 ;
40
40
41
41
// src/init.rs
42
42
@@ -48,7 +48,7 @@ pub extern "C" fn rust_main() -> ! {
48
48
fn end ();
49
49
}
50
50
println! (
51
- " free physical memory paddr = [0x{: x}, 0x{: x})" ,
51
+ " free physical memory paddr = [{:# x}, {:# x})" ,
52
52
end as usize - KERNEL_BEGIN_VADDR + KERNEL_BEGIN_PADDR ,
53
53
PHYSICAL_MEMORY_END
54
54
);
@@ -74,7 +74,7 @@ pub extern "C" fn rust_main() -> ! {
74
74
// src/init.rs
75
75
76
76
println! (
77
- " free physical memory ppn = [0x{: x}, 0x{: x})" ,
77
+ " free physical memory ppn = [{:# x}, {:# x})" ,
78
78
((end as usize - KERNEL_BEGIN_VADDR + KERNEL_BEGIN_PADDR ) >> 12 ) + 1 ,
79
79
PHYSICAL_MEMORY_END >> 12
80
80
);
@@ -243,9 +243,9 @@ pub extern "C" fn rust_main() -> ! {
243
243
extern " C" {
244
244
fn end ();
245
245
}
246
- println! (" kernel end vaddr = 0x{: x}" , end as usize );
246
+ println! (" kernel end vaddr = {:# x}" , end as usize );
247
247
println! (
248
- " free physical memory ppn = [0x{: x}, 0x{: x})" ,
248
+ " free physical memory ppn = [{:# x}, {:# x})" ,
249
249
((end as usize - KERNEL_BEGIN_VADDR + KERNEL_BEGIN_PADDR ) >> 12 ) + 1 ,
250
250
PHYSICAL_MEMORY_END >> 12
251
251
);
@@ -266,67 +266,31 @@ pub extern "C" fn rust_main() -> ! {
266
266
}
267
267
268
268
fn frame_allocating_test () {
269
- println! (" alloc {:# x?}" , alloc_frame ());
269
+ println! (" alloc {:x?}" , alloc_frame ());
270
270
let f = alloc_frame ();
271
- println! (" alloc {:# x?}" , f );
272
- println! (" alloc {:# x?}" , alloc_frame ());
273
- println! (" dealloc {:# x?}" , f );
271
+ println! (" alloc {:x?}" , f );
272
+ println! (" alloc {:x?}" , alloc_frame ());
273
+ println! (" dealloc {:x?}" , f );
274
274
dealloc_frame (f . unwrap ());
275
- println! (" alloc {:# x?}" , alloc_frame ());
276
- println! (" alloc {:# x?}" , alloc_frame ());
275
+ println! (" alloc {:x?}" , alloc_frame ());
276
+ println! (" alloc {:x?}" , alloc_frame ());
277
277
}
278
278
```
279
279
我们尝试在分配的过程中回收,之后再进行分配,结果如何呢?
280
280
> ** [ success] 物理页分配与回收测试**
281
281
>
282
282
> ``` rust
283
- > free physical memory paddr = [0x80222020 , 0x88000000 )
284
- > free physical memory ppn = [0x80223 , 0x88000 )
283
+ > free physical memory paddr = [0x8021f020 , 0x88000000 )
284
+ > free physical memory ppn = [0x80220 , 0x88000 )
285
285
> ++++ setup interrupt! ++++
286
286
> ++++ setup timer! ++++
287
287
> ++++ setup memory! ++++
288
- > alloc Some (
289
- > Frame (
290
- > PhysAddr (
291
- > 0x80223000 ,
292
- > ),
293
- > ),
294
- > )
295
- > alloc Some (
296
- > Frame (
297
- > PhysAddr (
298
- > 0x80224000 ,
299
- > ),
300
- > ),
301
- > )
302
- > alloc Some (
303
- > Frame (
304
- > PhysAddr (
305
- > 0x80225000 ,
306
- > ),
307
- > ),
308
- > )
309
- > dealloc Some (
310
- > Frame (
311
- > PhysAddr (
312
- > 0x80224000 ,
313
- > ),
314
- > ),
315
- > )
316
- > alloc Some (
317
- > Frame (
318
- > PhysAddr (
319
- > 0x80224000 ,
320
- > ),
321
- > ),
322
- > )
323
- > alloc Some (
324
- > Frame (
325
- > PhysAddr (
326
- > 0x80226000 ,
327
- > ),
328
- > ),
329
- > )
288
+ > alloc Some (Frame (PhysAddr (80220000 )))
289
+ > alloc Some (Frame (PhysAddr (80221000 )))
290
+ > alloc Some (Frame (PhysAddr (80222000 )))
291
+ > dealloc Some (Frame (PhysAddr (80221000 )))
292
+ > alloc Some (Frame (PhysAddr (80221000 )))
293
+ > alloc Some (Frame (PhysAddr (80223000 )))
330
294
> * 100 ticks *
331
295
> * 100 ticks *
332
296
> ...
@@ -336,4 +300,5 @@ fn frame_allocating_test() {
336
300
337
301
如果结果有问题的话,在[这里]()能找到现有的代码。
338
302
339
- 不过,这种物理内存分配给人一种过家家的感觉。无论表面上分配、回收做得怎样井井有条,实际上都并没有对物理内存产生任何影响!不要着急,我们之后会使用它们的。
303
+ 不过,这种物理内存分配给人一种过家家的感觉。无论表面上分配、回收做得怎样井井有条,实际上都并没有对物理内存产生任何影响!不要着急,我们之后会使用它们的。
304
+
0 commit comments