/* * Copyright (c) 2026, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class UnsharedResourceFile final : public File { public: static ErrorOr> create(UnshareType); virtual ~UnsharedResourceFile() override; virtual bool can_read(OpenFileDescription const&, u64) const override { return true; } virtual bool can_write(OpenFileDescription const&, u64) const override { return true; } virtual ErrorOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return ENOTSUP; } virtual ErrorOr write(OpenFileDescription&, u64, UserOrKernelBuffer const&, size_t) override { return ENOTSUP; } virtual ErrorOr ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; virtual ErrorOr> pseudo_path(OpenFileDescription const&) const override; virtual StringView class_name() const override { return "UnsharedResourceFile"sv; } ErrorOr initialize_resource(); private: virtual bool is_unshared_resource_file() const override { return true; } explicit UnsharedResourceFile(UnshareType); UnshareType const m_type; MutexProtected> m_root_filesystem; }; }