فهرست منبع

Kernel+LibPartition: Move PartitionTable into LibPartition

Samuel Bowman 3 سال پیش
والد
کامیت
940dde9947

+ 1 - 1
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

+ 2 - 2
Kernel/Storage/Partition/MBRPartitionTable.h

@@ -11,11 +11,11 @@
 #include <AK/RefPtr.h>
 #include <AK/Result.h>
 #include <AK/Vector.h>
-#include <Kernel/Storage/Partition/PartitionTable.h>
+#include <LibPartition/PartitionTable.h>
 
 namespace Kernel {
 
-class MBRPartitionTable : public PartitionTable {
+class MBRPartitionTable : public Partition::PartitionTable {
 public:
     struct [[gnu::packed]] Entry {
         u8 status;

+ 0 - 33
Kernel/Storage/Partition/PartitionTable.h

@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2020-2022, Liav A. <liavalb@hotmail.co.il>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#pragma once
-
-#include <AK/RefPtr.h>
-#include <AK/Vector.h>
-#include <Kernel/Storage/Partition/DiskPartition.h>
-#include <Kernel/Storage/StorageDevice.h>
-#include <LibPartition/DiskPartitionMetadata.h>
-
-namespace Kernel {
-
-class PartitionTable {
-public:
-    Optional<Partition::DiskPartitionMetadata> partition(unsigned index);
-    size_t partitions_count() const { return m_partitions.size(); }
-    virtual ~PartitionTable() = default;
-    virtual bool is_valid() const = 0;
-
-    Vector<Partition::DiskPartitionMetadata> partitions() const { return m_partitions; }
-
-protected:
-    explicit PartitionTable(StorageDevice const&);
-
-    NonnullRefPtr<StorageDevice> m_device;
-    Vector<Partition::DiskPartitionMetadata> m_partitions;
-};
-
-}

+ 1 - 1
Kernel/Storage/StorageManagement.cpp

@@ -131,7 +131,7 @@ UNMAP_AFTER_INIT void StorageManagement::dump_storage_devices_and_partitions() c
     }
 }
 
-UNMAP_AFTER_INIT ErrorOr<NonnullOwnPtr<PartitionTable>> StorageManagement::try_to_initialize_partition_table(StorageDevice const& device) const
+UNMAP_AFTER_INIT ErrorOr<NonnullOwnPtr<Partition::PartitionTable>> 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())

+ 2 - 2
Kernel/Storage/StorageManagement.h

@@ -14,10 +14,10 @@
 #include <Kernel/Storage/Partition/DiskPartition.h>
 #include <Kernel/Storage/StorageController.h>
 #include <Kernel/Storage/StorageDevice.h>
+#include <LibPartition/PartitionTable.h>
 
 namespace Kernel {
 
-class PartitionTable;
 class StorageManagement {
 
 public:
@@ -47,7 +47,7 @@ private:
 
     void dump_storage_devices_and_partitions() const;
 
-    ErrorOr<NonnullOwnPtr<PartitionTable>> try_to_initialize_partition_table(StorageDevice const&) const;
+    ErrorOr<NonnullOwnPtr<Partition::PartitionTable>> try_to_initialize_partition_table(StorageDevice const&) const;
 
     RefPtr<BlockDevice> boot_block_device() const;
 

+ 1 - 0
Userland/Libraries/LibPartition/CMakeLists.txt

@@ -1,5 +1,6 @@
 set(SOURCES
     DiskPartitionMetadata.cpp
+    PartitionTable.cpp
 )
 
 serenity_lib(LibPartition partition)

+ 5 - 4
Kernel/Storage/Partition/PartitionTable.cpp → Userland/Libraries/LibPartition/PartitionTable.cpp

@@ -4,15 +4,16 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
-#include <Kernel/Storage/Partition/PartitionTable.h>
+#include <LibPartition/PartitionTable.h>
 
-namespace Kernel {
-PartitionTable::PartitionTable(StorageDevice const& device)
+namespace Partition {
+
+PartitionTable::PartitionTable(Kernel::StorageDevice const& device)
     : m_device(device)
 {
 }
 
-Optional<Partition::DiskPartitionMetadata> PartitionTable::partition(unsigned index)
+Optional<DiskPartitionMetadata> PartitionTable::partition(unsigned index)
 {
     if (index > partitions_count())
         return {};

+ 30 - 0
Userland/Libraries/LibPartition/PartitionTable.h

@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2020-2022, Liav A. <liavalb@hotmail.co.il>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <Kernel/Storage/StorageDevice.h>
+#include <LibPartition/DiskPartitionMetadata.h>
+
+namespace Partition {
+
+class PartitionTable {
+public:
+    Optional<DiskPartitionMetadata> partition(unsigned index);
+    size_t partitions_count() const { return m_partitions.size(); }
+    virtual ~PartitionTable() = default;
+    virtual bool is_valid() const = 0;
+
+    Vector<DiskPartitionMetadata> partitions() const { return m_partitions; }
+
+protected:
+    explicit PartitionTable(Kernel::StorageDevice const&);
+
+    NonnullRefPtr<Kernel::StorageDevice> m_device;
+    Vector<DiskPartitionMetadata> m_partitions;
+};
+
+}