Serenity Operating System
at master 44 lines 1.1 kB view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/Bitmap.h> 10#include <Kernel/Memory/VMObject.h> 11#include <Kernel/UnixTypes.h> 12 13namespace Kernel::Memory { 14 15class InodeVMObject : public VMObject { 16public: 17 virtual ~InodeVMObject() override; 18 19 Inode& inode() { return *m_inode; } 20 Inode const& inode() const { return *m_inode; } 21 22 size_t amount_dirty() const; 23 size_t amount_clean() const; 24 25 int release_all_clean_pages(); 26 int try_release_clean_pages(int page_amount); 27 28 u32 writable_mappings() const; 29 30protected: 31 explicit InodeVMObject(Inode&, FixedArray<RefPtr<PhysicalPage>>&&, Bitmap dirty_pages); 32 explicit InodeVMObject(InodeVMObject const&, FixedArray<RefPtr<PhysicalPage>>&&, Bitmap dirty_pages); 33 34 InodeVMObject& operator=(InodeVMObject const&) = delete; 35 InodeVMObject& operator=(InodeVMObject&&) = delete; 36 InodeVMObject(InodeVMObject&&) = delete; 37 38 virtual bool is_inode() const final { return true; } 39 40 NonnullRefPtr<Inode> m_inode; 41 Bitmap m_dirty_pages; 42}; 43 44}