Преглед изворни кода

Kernel+LibPartition: Move DiskPartitionMetadata into LibPartition

This commit creates a new library LibPartition which will contain
partition related code sharable between Kernel and Userland and
includes DiskPartitionMetadata as the first shared class.
Samuel Bowman пре 3 година
родитељ
комит
be1c5c6b9f

+ 5 - 1
Kernel/CMakeLists.txt

@@ -104,7 +104,6 @@ set(KERNEL_SOURCES
     Storage/ATA/ATAPIDiscDevice.cpp
     Storage/ATA/ATAPort.cpp
     Storage/Partition/DiskPartition.cpp
-    Storage/Partition/DiskPartitionMetadata.cpp
     Storage/Partition/EBRPartitionTable.cpp
     Storage/Partition/GUIDPartitionTable.cpp
     Storage/Partition/MBRPartitionTable.cpp
@@ -405,6 +404,10 @@ set(CRYPTO_SOURCES
     ../Userland/Libraries/LibCrypto/Hash/SHA2.cpp
 )
 
+set(PARTITION_SOURCES
+    ../Userland/Libraries/LibPartition/DiskPartitionMetadata.cpp
+)
+
 set(SOURCES
     ${AK_SOURCES}
     )
@@ -416,6 +419,7 @@ if (NOT "${SERENITY_ARCH}" STREQUAL "aarch64")
         ${ELF_SOURCES}
         ${VT_SOURCES}
         ${CRYPTO_SOURCES}
+        ${PARTITION_SOURCES}
     )
 else()
     set(RPI_SOURCES

+ 3 - 3
Kernel/Storage/Partition/DiskPartition.cpp

@@ -11,7 +11,7 @@
 
 namespace Kernel {
 
-NonnullRefPtr<DiskPartition> DiskPartition::create(BlockDevice& device, unsigned minor_number, DiskPartitionMetadata metadata)
+NonnullRefPtr<DiskPartition> DiskPartition::create(BlockDevice& device, unsigned minor_number, Partition::DiskPartitionMetadata metadata)
 {
     auto partition_or_error = DeviceManagement::try_create_device<DiskPartition>(device, minor_number, metadata);
     // FIXME: Find a way to propagate errors
@@ -19,7 +19,7 @@ NonnullRefPtr<DiskPartition> DiskPartition::create(BlockDevice& device, unsigned
     return partition_or_error.release_value();
 }
 
-DiskPartition::DiskPartition(BlockDevice& device, unsigned minor_number, DiskPartitionMetadata metadata)
+DiskPartition::DiskPartition(BlockDevice& device, unsigned minor_number, Partition::DiskPartitionMetadata metadata)
     : BlockDevice(100, minor_number, device.block_size())
     , m_device(device)
     , m_metadata(metadata)
@@ -28,7 +28,7 @@ DiskPartition::DiskPartition(BlockDevice& device, unsigned minor_number, DiskPar
 
 DiskPartition::~DiskPartition() = default;
 
-DiskPartitionMetadata const& DiskPartition::metadata() const
+Partition::DiskPartitionMetadata const& DiskPartition::metadata() const
 {
     return m_metadata;
 }

+ 5 - 5
Kernel/Storage/Partition/DiskPartition.h

@@ -9,7 +9,7 @@
 #include <AK/RefPtr.h>
 #include <AK/WeakPtr.h>
 #include <Kernel/Devices/BlockDevice.h>
-#include <Kernel/Storage/Partition/DiskPartitionMetadata.h>
+#include <LibPartition/DiskPartitionMetadata.h>
 
 namespace Kernel {
 
@@ -17,7 +17,7 @@ class DiskPartition final : public BlockDevice {
     friend class DeviceManagement;
 
 public:
-    static NonnullRefPtr<DiskPartition> create(BlockDevice&, unsigned, DiskPartitionMetadata);
+    static NonnullRefPtr<DiskPartition> create(BlockDevice&, unsigned, Partition::DiskPartitionMetadata);
     virtual ~DiskPartition();
 
     virtual void start_request(AsyncBlockDeviceRequest&) override;
@@ -28,14 +28,14 @@ public:
     virtual ErrorOr<size_t> write(OpenFileDescription&, u64, UserOrKernelBuffer const&, size_t) override;
     virtual bool can_write(OpenFileDescription const&, u64) const override;
 
-    DiskPartitionMetadata const& metadata() const;
+    Partition::DiskPartitionMetadata const& metadata() const;
 
 private:
-    DiskPartition(BlockDevice&, unsigned, DiskPartitionMetadata);
+    DiskPartition(BlockDevice&, unsigned, Partition::DiskPartitionMetadata);
     virtual StringView class_name() const override;
 
     WeakPtr<BlockDevice> m_device;
-    DiskPartitionMetadata m_metadata;
+    Partition::DiskPartitionMetadata m_metadata;
 };
 
 }

+ 1 - 1
Kernel/Storage/Partition/PartitionTable.cpp

@@ -12,7 +12,7 @@ PartitionTable::PartitionTable(StorageDevice const& device)
 {
 }
 
-Optional<DiskPartitionMetadata> PartitionTable::partition(unsigned index)
+Optional<Partition::DiskPartitionMetadata> PartitionTable::partition(unsigned index)
 {
     if (index > partitions_count())
         return {};

+ 4 - 4
Kernel/Storage/Partition/PartitionTable.h

@@ -9,25 +9,25 @@
 #include <AK/RefPtr.h>
 #include <AK/Vector.h>
 #include <Kernel/Storage/Partition/DiskPartition.h>
-#include <Kernel/Storage/Partition/DiskPartitionMetadata.h>
 #include <Kernel/Storage/StorageDevice.h>
+#include <LibPartition/DiskPartitionMetadata.h>
 
 namespace Kernel {
 
 class PartitionTable {
 public:
-    Optional<DiskPartitionMetadata> partition(unsigned index);
+    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<DiskPartitionMetadata> partitions() const { return m_partitions; }
+    Vector<Partition::DiskPartitionMetadata> partitions() const { return m_partitions; }
 
 protected:
     explicit PartitionTable(StorageDevice const&);
 
     NonnullRefPtr<StorageDevice> m_device;
-    Vector<DiskPartitionMetadata> m_partitions;
+    Vector<Partition::DiskPartitionMetadata> m_partitions;
 };
 
 }

+ 1 - 0
Userland/Libraries/CMakeLists.txt

@@ -36,6 +36,7 @@ add_subdirectory(LibLine)
 add_subdirectory(LibM)
 add_subdirectory(LibMain)
 add_subdirectory(LibMarkdown)
+add_subdirectory(LibPartition)
 add_subdirectory(LibPCIDB)
 add_subdirectory(LibPDF)
 add_subdirectory(LibProtocol)

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

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

+ 2 - 3
Kernel/Storage/Partition/DiskPartitionMetadata.cpp → Userland/Libraries/LibPartition/DiskPartitionMetadata.cpp

@@ -4,10 +4,9 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
-#include <AK/AllOf.h>
-#include <Kernel/Storage/Partition/DiskPartitionMetadata.h>
+#include <LibPartition/DiskPartitionMetadata.h>
 
-namespace Kernel {
+namespace Partition {
 
 DiskPartitionMetadata::PartitionType::PartitionType(u8 partition_type)
 {

+ 1 - 3
Kernel/Storage/Partition/DiskPartitionMetadata.h → Userland/Libraries/LibPartition/DiskPartitionMetadata.h

@@ -6,11 +6,9 @@
 
 #pragma once
 
-#include <AK/RefPtr.h>
 #include <AK/UUID.h>
-#include <Kernel/Devices/BlockDevice.h>
 
-namespace Kernel {
+namespace Partition {
 
 class DiskPartitionMetadata {
 private: