diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index cf54143dc1..c44af9b2bb 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -183,7 +183,8 @@ set(KERNEL_SOURCES FileSystem/SysFS/Subsystems/Kernel/Variables/Directory.cpp FileSystem/SysFS/Subsystems/Kernel/Variables/DumpKmallocStack.cpp FileSystem/SysFS/Subsystems/Kernel/Variables/UBSANDeadly.cpp - FileSystem/TmpFS.cpp + FileSystem/TmpFS/FileSystem.cpp + FileSystem/TmpFS/Inode.cpp FileSystem/VirtualFileSystem.cpp Firmware/BIOS.cpp Firmware/ACPI/Initialize.cpp diff --git a/Kernel/FileSystem/TmpFS/FileSystem.cpp b/Kernel/FileSystem/TmpFS/FileSystem.cpp new file mode 100644 index 0000000000..26926ef0c3 --- /dev/null +++ b/Kernel/FileSystem/TmpFS/FileSystem.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2019-2020, Sergey Bugaev + * Copyright (c) 2022, Liav A. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +namespace Kernel { + +ErrorOr> TmpFS::try_create() +{ + return TRY(adopt_nonnull_lock_ref_or_enomem(new (nothrow) TmpFS)); +} + +TmpFS::TmpFS() = default; +TmpFS::~TmpFS() = default; + +ErrorOr TmpFS::initialize() +{ + m_root_inode = TRY(TmpFSInode::try_create_root(*this)); + return {}; +} + +Inode& TmpFS::root_inode() +{ + VERIFY(!m_root_inode.is_null()); + return *m_root_inode; +} + +unsigned TmpFS::next_inode_index() +{ + MutexLocker locker(m_lock); + + return m_next_inode_index++; +} + +} diff --git a/Kernel/FileSystem/TmpFS/FileSystem.h b/Kernel/FileSystem/TmpFS/FileSystem.h new file mode 100644 index 0000000000..13c0fbbb75 --- /dev/null +++ b/Kernel/FileSystem/TmpFS/FileSystem.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019-2020, Sergey Bugaev + * Copyright (c) 2022, Liav A. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include + +namespace Kernel { + +class TmpFS final : public FileSystem { + friend class TmpFSInode; + +public: + virtual ~TmpFS() override; + static ErrorOr> try_create(); + virtual ErrorOr initialize() override; + + virtual StringView class_name() const override { return "TmpFS"sv; } + + virtual bool supports_watchers() const override { return true; } + + virtual Inode& root_inode() override; + +private: + TmpFS(); + + LockRefPtr m_root_inode; + + unsigned m_next_inode_index { 1 }; + unsigned next_inode_index(); +}; + +} diff --git a/Kernel/FileSystem/TmpFS.cpp b/Kernel/FileSystem/TmpFS/Inode.cpp similarity index 95% rename from Kernel/FileSystem/TmpFS.cpp rename to Kernel/FileSystem/TmpFS/Inode.cpp index 7f66a9b4d4..166df6de03 100644 --- a/Kernel/FileSystem/TmpFS.cpp +++ b/Kernel/FileSystem/TmpFS/Inode.cpp @@ -5,39 +5,11 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include -#include namespace Kernel { -ErrorOr> TmpFS::try_create() -{ - return TRY(adopt_nonnull_lock_ref_or_enomem(new (nothrow) TmpFS)); -} - -TmpFS::TmpFS() = default; -TmpFS::~TmpFS() = default; - -ErrorOr TmpFS::initialize() -{ - m_root_inode = TRY(TmpFSInode::try_create_root(*this)); - return {}; -} - -Inode& TmpFS::root_inode() -{ - VERIFY(!m_root_inode.is_null()); - return *m_root_inode; -} - -unsigned TmpFS::next_inode_index() -{ - MutexLocker locker(m_lock); - - return m_next_inode_index++; -} - TmpFSInode::TmpFSInode(TmpFS& fs, InodeMetadata const& metadata, LockWeakPtr parent) : Inode(fs, fs.next_inode_index()) , m_metadata(metadata) diff --git a/Kernel/FileSystem/TmpFS.h b/Kernel/FileSystem/TmpFS/Inode.h similarity index 83% rename from Kernel/FileSystem/TmpFS.h rename to Kernel/FileSystem/TmpFS/Inode.h index 3a98c89de2..667f0a9aad 100644 --- a/Kernel/FileSystem/TmpFS.h +++ b/Kernel/FileSystem/TmpFS/Inode.h @@ -7,39 +7,12 @@ #pragma once -#include #include -#include -#include +#include #include namespace Kernel { -class TmpFSInode; - -class TmpFS final : public FileSystem { - friend class TmpFSInode; - -public: - virtual ~TmpFS() override; - static ErrorOr> try_create(); - virtual ErrorOr initialize() override; - - virtual StringView class_name() const override { return "TmpFS"sv; } - - virtual bool supports_watchers() const override { return true; } - - virtual Inode& root_inode() override; - -private: - TmpFS(); - - LockRefPtr m_root_inode; - - unsigned m_next_inode_index { 1 }; - unsigned next_inode_index(); -}; - class TmpFSInode final : public Inode { friend class TmpFS; diff --git a/Kernel/Forward.h b/Kernel/Forward.h index ba2c62bb68..e83f87cb8c 100644 --- a/Kernel/Forward.h +++ b/Kernel/Forward.h @@ -61,6 +61,7 @@ class TCPSocket; class TTY; class Thread; class ThreadTracer; +class TmpFSInode; class UDPSocket; class UserOrKernelBuffer; class VirtualFileSystem; diff --git a/Kernel/Syscalls/mount.cpp b/Kernel/Syscalls/mount.cpp index 792169c81e..5169911780 100644 --- a/Kernel/Syscalls/mount.cpp +++ b/Kernel/Syscalls/mount.cpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include