Quellcode durchsuchen

Kernel+LibPartition: Move MBRPartitionTable into LibPartition

Samuel Bowman vor 3 Jahren
Ursprung
Commit
1a6ef03e4a

+ 4 - 0
AK/Debug.h.in

@@ -286,6 +286,10 @@
 #cmakedefine01 MATROSKA_TRACE_DEBUG
 #endif
 
+#ifndef MBR_DEBUG
+#cmakedefine01 MBR_DEBUG
+#endif
+
 #ifndef MEMORY_DEBUG
 #cmakedefine01 MEMORY_DEBUG
 #endif

+ 1 - 1
Kernel/CMakeLists.txt

@@ -106,7 +106,6 @@ set(KERNEL_SOURCES
     Storage/Partition/DiskPartition.cpp
     Storage/Partition/EBRPartitionTable.cpp
     Storage/Partition/GUIDPartitionTable.cpp
-    Storage/Partition/MBRPartitionTable.cpp
     Storage/NVMe/NVMeController.cpp
     Storage/NVMe/NVMeNameSpace.cpp
     Storage/NVMe/NVMeInterruptQueue.cpp
@@ -405,6 +404,7 @@ set(CRYPTO_SOURCES
 
 set(PARTITION_SOURCES
     ../Userland/Libraries/LibPartition/DiskPartitionMetadata.cpp
+    ../Userland/Libraries/LibPartition/MBRPartitionTable.cpp
     ../Userland/Libraries/LibPartition/PartitionTable.cpp
 )
 

+ 0 - 4
Kernel/Debug.h.in

@@ -203,10 +203,6 @@
 #cmakedefine01 MASTERPTY_DEBUG
 #endif
 
-#ifndef MBR_DEBUG
-#cmakedefine01 MBR_DEBUG
-#endif
-
 #ifndef MOUSE_DEBUG
 #cmakedefine01 MOUSE_DEBUG
 #endif

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

@@ -12,12 +12,12 @@
 #include <AK/Result.h>
 #include <AK/Vector.h>
 #include <Kernel/Storage/Partition/DiskPartition.h>
-#include <Kernel/Storage/Partition/MBRPartitionTable.h>
+#include <LibPartition/MBRPartitionTable.h>
 
 namespace Kernel {
 
 struct EBRPartitionHeader;
-class EBRPartitionTable : public MBRPartitionTable {
+class EBRPartitionTable : public Partition::MBRPartitionTable {
 public:
     ~EBRPartitionTable();
 

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

@@ -11,12 +11,12 @@
 #include <AK/Result.h>
 #include <AK/Types.h>
 #include <AK/Vector.h>
-#include <Kernel/Storage/Partition/MBRPartitionTable.h>
+#include <LibPartition/MBRPartitionTable.h>
 
 namespace Kernel {
 
 struct GUIDPartitionHeader;
-class GUIDPartitionTable final : public MBRPartitionTable {
+class GUIDPartitionTable final : public Partition::MBRPartitionTable {
 public:
     virtual ~GUIDPartitionTable() = default;
     ;

+ 2 - 2
Kernel/Storage/StorageManagement.cpp

@@ -23,9 +23,9 @@
 #include <Kernel/Storage/NVMe/NVMeController.h>
 #include <Kernel/Storage/Partition/EBRPartitionTable.h>
 #include <Kernel/Storage/Partition/GUIDPartitionTable.h>
-#include <Kernel/Storage/Partition/MBRPartitionTable.h>
 #include <Kernel/Storage/Ramdisk/Controller.h>
 #include <Kernel/Storage/StorageManagement.h>
+#include <LibPartition/MBRPartitionTable.h>
 
 namespace Kernel {
 
@@ -133,7 +133,7 @@ UNMAP_AFTER_INIT void StorageManagement::dump_storage_devices_and_partitions() c
 
 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);
+    auto mbr_table_or_error = Partition::MBRPartitionTable::try_to_initialize(device);
     if (!mbr_table_or_error.is_error())
         return mbr_table_or_error.release_value();
     auto ebr_table_or_error = EBRPartitionTable::try_to_initialize(device);

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

@@ -1,5 +1,6 @@
 set(SOURCES
     DiskPartitionMetadata.cpp
+    MBRPartitionTable.cpp
     PartitionTable.cpp
 )
 

+ 7 - 8
Kernel/Storage/Partition/MBRPartitionTable.cpp → Userland/Libraries/LibPartition/MBRPartitionTable.cpp

@@ -4,18 +4,17 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
-#include <AK/ByteBuffer.h>
-#include <Kernel/Debug.h>
-#include <Kernel/Storage/Partition/MBRPartitionTable.h>
+#include <AK/Debug.h>
+#include <LibPartition/MBRPartitionTable.h>
 
-namespace Kernel {
+namespace Partition {
 
 #define MBR_SIGNATURE 0xaa55
 #define MBR_PROTECTIVE 0xEE
 #define EBR_CHS_CONTAINER 0x05
 #define EBR_LBA_CONTAINER 0x0F
 
-ErrorOr<NonnullOwnPtr<MBRPartitionTable>> MBRPartitionTable::try_to_initialize(StorageDevice const& device)
+ErrorOr<NonnullOwnPtr<MBRPartitionTable>> MBRPartitionTable::try_to_initialize(Kernel::StorageDevice const& device)
 {
     auto table = TRY(adopt_nonnull_own_or_enomem(new (nothrow) MBRPartitionTable(device)));
     if (table->contains_ebr())
@@ -27,7 +26,7 @@ ErrorOr<NonnullOwnPtr<MBRPartitionTable>> MBRPartitionTable::try_to_initialize(S
     return table;
 }
 
-OwnPtr<MBRPartitionTable> MBRPartitionTable::try_to_initialize(StorageDevice const& device, u32 start_lba)
+OwnPtr<MBRPartitionTable> MBRPartitionTable::try_to_initialize(Kernel::StorageDevice const& device, u32 start_lba)
 {
     auto table = adopt_nonnull_own_or_enomem(new (nothrow) MBRPartitionTable(device, start_lba)).release_value_but_fixme_should_propagate_errors();
     if (!table->is_valid())
@@ -44,7 +43,7 @@ bool MBRPartitionTable::read_boot_record()
     return m_header_valid;
 }
 
-MBRPartitionTable::MBRPartitionTable(StorageDevice const& device, u32 start_lba)
+MBRPartitionTable::MBRPartitionTable(Kernel::StorageDevice const& device, u32 start_lba)
     : PartitionTable(device)
     , m_start_lba(start_lba)
     , m_cached_header(ByteBuffer::create_zeroed(m_device->block_size()).release_value_but_fixme_should_propagate_errors()) // FIXME: Do something sensible if this fails because of OOM.
@@ -65,7 +64,7 @@ MBRPartitionTable::MBRPartitionTable(StorageDevice const& device, u32 start_lba)
     m_valid = true;
 }
 
-MBRPartitionTable::MBRPartitionTable(StorageDevice const& device)
+MBRPartitionTable::MBRPartitionTable(Kernel::StorageDevice const& device)
     : PartitionTable(device)
     , m_start_lba(0)
     , m_cached_header(ByteBuffer::create_zeroed(m_device->block_size()).release_value_but_fixme_should_propagate_errors()) // FIXME: Do something sensible if this fails because of OOM.

+ 7 - 10
Kernel/Storage/Partition/MBRPartitionTable.h → Userland/Libraries/LibPartition/MBRPartitionTable.h

@@ -6,16 +6,12 @@
 
 #pragma once
 
-#include <AK/ByteBuffer.h>
 #include <AK/Error.h>
-#include <AK/RefPtr.h>
-#include <AK/Result.h>
-#include <AK/Vector.h>
 #include <LibPartition/PartitionTable.h>
 
-namespace Kernel {
+namespace Partition {
 
-class MBRPartitionTable : public Partition::PartitionTable {
+class MBRPartitionTable : public PartitionTable {
 public:
     struct [[gnu::packed]] Entry {
         u8 status;
@@ -42,10 +38,10 @@ public:
 public:
     ~MBRPartitionTable();
 
-    static ErrorOr<NonnullOwnPtr<MBRPartitionTable>> try_to_initialize(StorageDevice const&);
-    static OwnPtr<MBRPartitionTable> try_to_initialize(StorageDevice const&, u32 start_lba);
-    explicit MBRPartitionTable(StorageDevice const&);
-    MBRPartitionTable(StorageDevice const&, u32 start_lba);
+    static ErrorOr<NonnullOwnPtr<MBRPartitionTable>> try_to_initialize(Kernel::StorageDevice const&);
+    static OwnPtr<MBRPartitionTable> try_to_initialize(Kernel::StorageDevice const&, u32 start_lba);
+    explicit MBRPartitionTable(Kernel::StorageDevice const&);
+    MBRPartitionTable(Kernel::StorageDevice const&, u32 start_lba);
 
     bool is_protective_mbr() const;
     bool contains_ebr() const;
@@ -63,4 +59,5 @@ private:
     const u32 m_start_lba;
     ByteBuffer m_cached_header;
 };
+
 }