mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 18:37:34 +00:00
Kernel: Release MM lock while yielding from inode page fault handler
We need to make sure other processors can grab the MM lock while we wait, so release it when we might block. Reading the page from disk may also block, so release it during that time as well.
This commit is contained in:
parent
ac3927086f
commit
250a310454
4 changed files with 23 additions and 11 deletions
|
@ -93,7 +93,7 @@ public:
|
|||
bool is_kernel() const { return m_kernel || vaddr().get() >= 0xc0000000; }
|
||||
void set_kernel(bool kernel) { m_kernel = kernel; }
|
||||
|
||||
PageFaultResponse handle_fault(const PageFault&);
|
||||
PageFaultResponse handle_fault(const PageFault&, ScopedSpinLock<RecursiveSpinLock>&);
|
||||
|
||||
OwnPtr<Region> clone(Process&);
|
||||
|
||||
|
@ -254,7 +254,7 @@ private:
|
|||
bool remap_vmobject_page(size_t index, bool with_flush = true);
|
||||
|
||||
PageFaultResponse handle_cow_fault(size_t page_index);
|
||||
PageFaultResponse handle_inode_fault(size_t page_index);
|
||||
PageFaultResponse handle_inode_fault(size_t page_index, ScopedSpinLock<RecursiveSpinLock>&);
|
||||
PageFaultResponse handle_zero_fault(size_t page_index);
|
||||
|
||||
bool map_individual_page_impl(size_t page_index);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue