mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 10:18:11 +00:00
Kernel: Add MemoryManager::set_page_writable_direct()
This helper function goes directly to the page tables and makes a virtual address writable or non-writable.
This commit is contained in:
parent
40f2abf7c3
commit
96fb3d4a11
2 changed files with 14 additions and 0 deletions
|
@ -915,4 +915,16 @@ void MemoryManager::dump_kernel_regions()
|
|||
}
|
||||
}
|
||||
|
||||
void MemoryManager::set_page_writable_direct(VirtualAddress vaddr, bool writable)
|
||||
{
|
||||
ScopedSpinLock lock(s_mm_lock);
|
||||
ScopedSpinLock page_lock(kernel_page_directory().get_lock());
|
||||
auto* pte = ensure_pte(kernel_page_directory(), vaddr);
|
||||
VERIFY(pte);
|
||||
if (pte->is_writable() == writable)
|
||||
return;
|
||||
pte->set_writable(writable);
|
||||
flush_tlb(&kernel_page_directory(), vaddr);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue