#pragma once #include #include class InodeVMObject final : public VMObject { public: virtual ~InodeVMObject() override; static NonnullRefPtr create_with_inode(Inode&); virtual NonnullRefPtr clone() override; Inode& inode() { return *m_inode; } const Inode& inode() const { return *m_inode; } void inode_contents_changed(Badge, off_t, ssize_t, const u8*); void inode_size_changed(Badge, size_t old_size, size_t new_size); size_t amount_dirty() const; size_t amount_clean() const; int release_all_clean_pages(); private: explicit InodeVMObject(Inode&, size_t); explicit InodeVMObject(const InodeVMObject&); InodeVMObject& operator=(const InodeVMObject&) = delete; InodeVMObject& operator=(InodeVMObject&&) = delete; InodeVMObject(InodeVMObject&&) = delete; virtual bool is_inode() const override { return true; } int release_all_clean_pages_impl(); NonnullRefPtr m_inode; Bitmap m_dirty_pages; };