|
|
|
@ -76,8 +76,8 @@ impl PageTable {
|
|
|
|
|
let idxs = vpn.indexes();
|
|
|
|
|
let mut ppn = self.root_ppn;
|
|
|
|
|
let mut result: Option<&mut PageTableEntry> = None;
|
|
|
|
|
for i in 0..3 {
|
|
|
|
|
let pte = &mut ppn.get_pte_array()[idxs[i]];
|
|
|
|
|
for (i, idx) in idxs.iter().enumerate() {
|
|
|
|
|
let pte = &mut ppn.get_pte_array()[*idx];
|
|
|
|
|
if i == 2 {
|
|
|
|
|
result = Some(pte);
|
|
|
|
|
break;
|
|
|
|
@ -95,8 +95,8 @@ impl PageTable {
|
|
|
|
|
let idxs = vpn.indexes();
|
|
|
|
|
let mut ppn = self.root_ppn;
|
|
|
|
|
let mut result: Option<&mut PageTableEntry> = None;
|
|
|
|
|
for i in 0..3 {
|
|
|
|
|
let pte = &mut ppn.get_pte_array()[idxs[i]];
|
|
|
|
|
for (i, idx) in idxs.iter().enumerate() {
|
|
|
|
|
let pte = &mut ppn.get_pte_array()[*idx];
|
|
|
|
|
if i == 2 {
|
|
|
|
|
result = Some(pte);
|
|
|
|
|
break;
|
|
|
|
@ -121,7 +121,7 @@ impl PageTable {
|
|
|
|
|
*pte = PageTableEntry::empty();
|
|
|
|
|
}
|
|
|
|
|
pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry> {
|
|
|
|
|
self.find_pte(vpn).map(|pte| pte.clone())
|
|
|
|
|
self.find_pte(vpn).map(|pte| *pte)
|
|
|
|
|
}
|
|
|
|
|
pub fn token(&self) -> usize {
|
|
|
|
|
8usize << 60 | self.root_ppn.0
|
|
|
|
|