1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-17 14:15:07 +00:00
serenity/Kernel/Memory/PrivateInodeVMObject.h
creator1creeper1 9a1dfe70fe Kernel: Make PrivateInodeVMObject construction OOM-aware
This commit moves the allocation of the resources required for
PrivateInodeVMObject from its constructors to its factory functions.

We're making this change to expose the fallibility of the allocation.
2022-01-15 22:16:00 +02:00

34 lines
969 B
C++

/*
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <Kernel/Memory/InodeVMObject.h>
#include <Kernel/UnixTypes.h>
namespace Kernel::Memory {
class PrivateInodeVMObject final : public InodeVMObject {
AK_MAKE_NONMOVABLE(PrivateInodeVMObject);
public:
virtual ~PrivateInodeVMObject() override;
static ErrorOr<NonnullRefPtr<PrivateInodeVMObject>> try_create_with_inode(Inode&);
virtual ErrorOr<NonnullRefPtr<VMObject>> try_clone() override;
private:
virtual bool is_private_inode() const override { return true; }
explicit PrivateInodeVMObject(Inode&, FixedArray<RefPtr<PhysicalPage>>&&);
explicit PrivateInodeVMObject(PrivateInodeVMObject const&, FixedArray<RefPtr<PhysicalPage>>&&);
virtual StringView class_name() const override { return "PrivateInodeVMObject"sv; }
PrivateInodeVMObject& operator=(PrivateInodeVMObject const&) = delete;
};
}