/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Kernel { class ProcFSInode : public Inode { friend class ProcFS; public: virtual ~ProcFSInode() override; protected: ProcFSInode(ProcFS const&, InodeIndex); ProcFS& procfs() { return static_cast(Inode::fs()); } ProcFS const& procfs() const { return static_cast(Inode::fs()); } // ^Inode virtual ErrorOr attach(OpenFileDescription& description) override = 0; virtual void did_seek(OpenFileDescription&, off_t) override = 0; virtual ErrorOr flush_metadata() override final; virtual ErrorOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override final; virtual ErrorOr add_child(Inode&, StringView name, mode_t) override final; virtual ErrorOr remove_child(StringView name) override final; virtual ErrorOr replace_child(StringView name, Inode& child) override final; virtual ErrorOr chmod(mode_t) override final; virtual ErrorOr chown(UserID, GroupID) override final; }; }