0
即使頁表項已存在,我也希望故意生成頁面錯誤。如何引發頁面錯誤
所以我清除了一個_PAGE_PRESENT
位來產生頁面錯誤。
這裏的內核代碼我寫道:
pte = get_locked_pte(mm, addr, &ptl);
entry = *pte;
entry = pte_clear_flags(entry, _PAGE_PRESENT);
set_pte_at(mm, addr, pte, entry);
pte_unmap_unlock(pte, ptl);
flush_tlb_range(vma, vma->vm_start, vma->vm_end);
但是,此代碼不能正常工作。我打算的頁面錯誤不會發生。我想知道如何觸發頁面錯誤。
謝謝。
你想編寫內核代碼,或用戶的土地代碼? –
你正在編寫內核代碼來跳轉用戶代碼中的頁面錯誤嗎? – jxh
上面的代碼是內核代碼。在上面的代碼中,「addr」是用戶空間的地址。 –