mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 07:48:11 +00:00

This is memory that's loaded from an inode (file) but not modified in memory, so still identical to what's on disk. This kind of memory can be freed and reloaded transparently from disk if needed.
34 lines
988 B
C++
34 lines
988 B
C++
#pragma once
|
|
|
|
#include <Kernel/UnixTypes.h>
|
|
#include <Kernel/VM/VMObject.h>
|
|
|
|
class InodeVMObject final : public VMObject {
|
|
public:
|
|
virtual ~InodeVMObject() override;
|
|
|
|
static NonnullRefPtr<InodeVMObject> create_with_inode(Inode&);
|
|
virtual NonnullRefPtr<VMObject> clone() override;
|
|
|
|
Inode& inode() { return *m_inode; }
|
|
const Inode& inode() const { return *m_inode; }
|
|
|
|
void inode_contents_changed(Badge<Inode>, off_t, ssize_t, const u8*);
|
|
void inode_size_changed(Badge<Inode>, size_t old_size, size_t new_size);
|
|
|
|
size_t amount_dirty() const;
|
|
size_t amount_clean() const;
|
|
|
|
private:
|
|
explicit InodeVMObject(Inode&);
|
|
explicit InodeVMObject(const InodeVMObject&);
|
|
|
|
InodeVMObject& operator=(const InodeVMObject&) = delete;
|
|
InodeVMObject& operator=(InodeVMObject&&) = delete;
|
|
InodeVMObject(InodeVMObject&&) = delete;
|
|
|
|
virtual bool is_inode() const override { return true; }
|
|
|
|
NonnullRefPtr<Inode> m_inode;
|
|
Bitmap m_dirty_pages;
|
|
};
|