mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-27 01:50:24 +00:00
ad480ff18b
This commit moves the allocation of the resources required for InodeVMObject from its constructors to the constructors of its child classes. We're making this change to give the child classes the chance to expose the fallibility of the allocation.
44 lines
1 KiB
C++
44 lines
1 KiB
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Bitmap.h>
|
|
#include <Kernel/Memory/VMObject.h>
|
|
#include <Kernel/UnixTypes.h>
|
|
|
|
namespace Kernel::Memory {
|
|
|
|
class InodeVMObject : public VMObject {
|
|
public:
|
|
virtual ~InodeVMObject() override;
|
|
|
|
Inode& inode() { return *m_inode; }
|
|
Inode const& inode() const { return *m_inode; }
|
|
|
|
size_t amount_dirty() const;
|
|
size_t amount_clean() const;
|
|
|
|
int release_all_clean_pages();
|
|
|
|
u32 writable_mappings() const;
|
|
u32 executable_mappings() const;
|
|
|
|
protected:
|
|
explicit InodeVMObject(Inode&, FixedArray<RefPtr<PhysicalPage>>&&);
|
|
explicit InodeVMObject(InodeVMObject const&, FixedArray<RefPtr<PhysicalPage>>&&);
|
|
|
|
InodeVMObject& operator=(InodeVMObject const&) = delete;
|
|
InodeVMObject& operator=(InodeVMObject&&) = delete;
|
|
InodeVMObject(InodeVMObject&&) = delete;
|
|
|
|
virtual bool is_inode() const final { return true; }
|
|
|
|
NonnullRefPtr<Inode> m_inode;
|
|
Bitmap m_dirty_pages;
|
|
};
|
|
|
|
}
|