diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 9e3a6991dae..6c991ba3023 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -107,7 +107,6 @@ set(KERNEL_SOURCES Storage/Partition/EBRPartitionTable.cpp Storage/Partition/GUIDPartitionTable.cpp Storage/Partition/MBRPartitionTable.cpp - Storage/Partition/PartitionTable.cpp Storage/NVMe/NVMeController.cpp Storage/NVMe/NVMeNameSpace.cpp Storage/NVMe/NVMeInterruptQueue.cpp @@ -406,6 +405,7 @@ set(CRYPTO_SOURCES set(PARTITION_SOURCES ../Userland/Libraries/LibPartition/DiskPartitionMetadata.cpp + ../Userland/Libraries/LibPartition/PartitionTable.cpp ) set(SOURCES diff --git a/Kernel/Storage/Partition/MBRPartitionTable.h b/Kernel/Storage/Partition/MBRPartitionTable.h index 2fae2d6aba9..24bcdb49b9c 100644 --- a/Kernel/Storage/Partition/MBRPartitionTable.h +++ b/Kernel/Storage/Partition/MBRPartitionTable.h @@ -11,11 +11,11 @@ #include #include #include -#include +#include namespace Kernel { -class MBRPartitionTable : public PartitionTable { +class MBRPartitionTable : public Partition::PartitionTable { public: struct [[gnu::packed]] Entry { u8 status; diff --git a/Kernel/Storage/Partition/PartitionTable.h b/Kernel/Storage/Partition/PartitionTable.h deleted file mode 100644 index e21f5d61ffc..00000000000 --- a/Kernel/Storage/Partition/PartitionTable.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2022, Liav A. - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include -#include -#include -#include -#include - -namespace Kernel { - -class PartitionTable { -public: - Optional partition(unsigned index); - size_t partitions_count() const { return m_partitions.size(); } - virtual ~PartitionTable() = default; - virtual bool is_valid() const = 0; - - Vector partitions() const { return m_partitions; } - -protected: - explicit PartitionTable(StorageDevice const&); - - NonnullRefPtr m_device; - Vector m_partitions; -}; - -} diff --git a/Kernel/Storage/StorageManagement.cpp b/Kernel/Storage/StorageManagement.cpp index 56fac391cf3..f574ebd1192 100644 --- a/Kernel/Storage/StorageManagement.cpp +++ b/Kernel/Storage/StorageManagement.cpp @@ -131,7 +131,7 @@ UNMAP_AFTER_INIT void StorageManagement::dump_storage_devices_and_partitions() c } } -UNMAP_AFTER_INIT ErrorOr> StorageManagement::try_to_initialize_partition_table(StorageDevice const& device) const +UNMAP_AFTER_INIT ErrorOr> StorageManagement::try_to_initialize_partition_table(StorageDevice const& device) const { auto mbr_table_or_error = MBRPartitionTable::try_to_initialize(device); if (!mbr_table_or_error.is_error()) diff --git a/Kernel/Storage/StorageManagement.h b/Kernel/Storage/StorageManagement.h index e4a85b59e30..165704dc205 100644 --- a/Kernel/Storage/StorageManagement.h +++ b/Kernel/Storage/StorageManagement.h @@ -14,10 +14,10 @@ #include #include #include +#include namespace Kernel { -class PartitionTable; class StorageManagement { public: @@ -47,7 +47,7 @@ private: void dump_storage_devices_and_partitions() const; - ErrorOr> try_to_initialize_partition_table(StorageDevice const&) const; + ErrorOr> try_to_initialize_partition_table(StorageDevice const&) const; RefPtr boot_block_device() const; diff --git a/Userland/Libraries/LibPartition/CMakeLists.txt b/Userland/Libraries/LibPartition/CMakeLists.txt index 83751ec44b7..9d3a0ef59e4 100644 --- a/Userland/Libraries/LibPartition/CMakeLists.txt +++ b/Userland/Libraries/LibPartition/CMakeLists.txt @@ -1,5 +1,6 @@ set(SOURCES DiskPartitionMetadata.cpp + PartitionTable.cpp ) serenity_lib(LibPartition partition) diff --git a/Kernel/Storage/Partition/PartitionTable.cpp b/Userland/Libraries/LibPartition/PartitionTable.cpp similarity index 51% rename from Kernel/Storage/Partition/PartitionTable.cpp rename to Userland/Libraries/LibPartition/PartitionTable.cpp index 75fe0e56cfa..dc5685667d3 100644 --- a/Kernel/Storage/Partition/PartitionTable.cpp +++ b/Userland/Libraries/LibPartition/PartitionTable.cpp @@ -4,15 +4,16 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include -namespace Kernel { -PartitionTable::PartitionTable(StorageDevice const& device) +namespace Partition { + +PartitionTable::PartitionTable(Kernel::StorageDevice const& device) : m_device(device) { } -Optional PartitionTable::partition(unsigned index) +Optional PartitionTable::partition(unsigned index) { if (index > partitions_count()) return {}; diff --git a/Userland/Libraries/LibPartition/PartitionTable.h b/Userland/Libraries/LibPartition/PartitionTable.h new file mode 100644 index 00000000000..2ca4db59a00 --- /dev/null +++ b/Userland/Libraries/LibPartition/PartitionTable.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020-2022, Liav A. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +namespace Partition { + +class PartitionTable { +public: + Optional partition(unsigned index); + size_t partitions_count() const { return m_partitions.size(); } + virtual ~PartitionTable() = default; + virtual bool is_valid() const = 0; + + Vector partitions() const { return m_partitions; } + +protected: + explicit PartitionTable(Kernel::StorageDevice const&); + + NonnullRefPtr m_device; + Vector m_partitions; +}; + +}