/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class ProcFSProcessSubDirectoryInode final : public ProcFSProcessAssociatedInode { friend class ProcFS; public: static ErrorOr> try_create(ProcFS const&, SegmentedProcFSIndex::ProcessSubDirectory, ProcessID); private: ProcFSProcessSubDirectoryInode(ProcFS const&, SegmentedProcFSIndex::ProcessSubDirectory, ProcessID); // ^Inode virtual ErrorOr attach(OpenFileDescription& description) override; virtual void did_seek(OpenFileDescription&, off_t) override; virtual InodeMetadata metadata() const override; virtual ErrorOr traverse_as_directory(Function(FileSystem::DirectoryEntryView const&)>) const override; virtual ErrorOr read_bytes_locked(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override final; virtual ErrorOr> lookup(StringView name) override; const SegmentedProcFSIndex::ProcessSubDirectory m_sub_directory_type; }; }