diff --git a/Kernel/VM/Region.h b/Kernel/VM/Region.h index 95ac5fd96a..f9879c84c2 100644 --- a/Kernel/VM/Region.h +++ b/Kernel/VM/Region.h @@ -109,21 +109,9 @@ public: u32 cow_pages() const; - void set_writable(bool b) - { - if (b) - m_access |= Access::Write; - else - m_access &= ~Access::Write; - } - - void set_readable(bool b) - { - if (b) - m_access |= Access::Read; - else - m_access &= ~Access::Read; - } + void set_readable(bool b) { set_access_bit(Access::Read, b); } + void set_writable(bool b) { set_access_bit(Access::Write, b); } + void set_executable(bool b) { set_access_bit(Access::Execute, b); } void map(PageDirectory&); enum class ShouldDeallocateVirtualMemoryRange { @@ -147,6 +135,14 @@ public: private: Bitmap& ensure_cow_map() const; + void set_access_bit(Access access, bool b) + { + if (b) + m_access |= access; + else + m_access &= ~access; + } + PageFaultResponse handle_cow_fault(size_t page_index); PageFaultResponse handle_inode_fault(size_t page_index); PageFaultResponse handle_zero_fault(size_t page_index);