diff options
author | Liav A <liavalb@gmail.com> | 2022-10-24 09:41:31 +0300 |
---|---|---|
committer | Andrew Kaster <andrewdkaster@gmail.com> | 2022-11-08 02:54:48 -0700 |
commit | 3906dd3aa3c87d0bc7b67d808f1bc7548469caaa (patch) | |
tree | 509b0d123e85df092b2354e647757bfba9bcd822 /Kernel/FileSystem/ProcFS/Inode.h | |
parent | e882b2ed05097c27ab4b09330b71402c243dc1a0 (diff) | |
download | serenity-3906dd3aa3c87d0bc7b67d808f1bc7548469caaa.zip |
Kernel: Split the ProcFS core file into smaller components
Diffstat (limited to 'Kernel/FileSystem/ProcFS/Inode.h')
-rw-r--r-- | Kernel/FileSystem/ProcFS/Inode.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Kernel/FileSystem/ProcFS/Inode.h b/Kernel/FileSystem/ProcFS/Inode.h new file mode 100644 index 0000000000..3fcf5847c4 --- /dev/null +++ b/Kernel/FileSystem/ProcFS/Inode.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include <Kernel/FileSystem/Inode.h> +#include <Kernel/FileSystem/OpenFileDescription.h> +#include <Kernel/FileSystem/ProcFS/FileSystem.h> +#include <Kernel/ProcessExposed.h> +#include <Kernel/UnixTypes.h> + +namespace Kernel { + +class ProcFSInode : public Inode { + friend class ProcFS; + +public: + virtual ~ProcFSInode() override; + +protected: + ProcFSInode(ProcFS const&, InodeIndex); + + ProcFS& procfs() { return static_cast<ProcFS&>(Inode::fs()); } + ProcFS const& procfs() const { return static_cast<ProcFS const&>(Inode::fs()); } + + // ^Inode + virtual ErrorOr<void> attach(OpenFileDescription& description) override = 0; + virtual void did_seek(OpenFileDescription&, off_t) override = 0; + virtual ErrorOr<void> flush_metadata() override final; + virtual ErrorOr<NonnullLockRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override final; + virtual ErrorOr<void> add_child(Inode&, StringView name, mode_t) override final; + virtual ErrorOr<void> remove_child(StringView name) override final; + virtual ErrorOr<void> chmod(mode_t) override final; + virtual ErrorOr<void> chown(UserID, GroupID) override final; +}; + +} |