/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class ProcFSGlobalInode : public ProcFSInode { friend class ProcFS; public: static ErrorOr> try_create(ProcFS const&, ProcFSExposedComponent const&); virtual ~ProcFSGlobalInode() override {}; StringView name() const; protected: ProcFSGlobalInode(ProcFS const&, ProcFSExposedComponent const&); // ^Inode virtual ErrorOr attach(OpenFileDescription& description) override final; virtual ErrorOr read_bytes_locked(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override final; virtual ErrorOr write_bytes_locked(off_t, size_t, UserOrKernelBuffer const& buffer, OpenFileDescription*) override final; virtual void did_seek(OpenFileDescription&, off_t) override final; virtual InodeMetadata metadata() const override; virtual ErrorOr traverse_as_directory(Function(FileSystem::DirectoryEntryView const&)>) const override; virtual ErrorOr> lookup(StringView) override; virtual ErrorOr truncate(u64) override final; virtual ErrorOr update_timestamps(Optional