Kernel: Move Partition out of StorageDevice and rename functions

This commit is contained in:
2023-03-29 13:23:01 +03:00
parent ae05ad3f38
commit dd84a2175f
10 changed files with 51 additions and 48 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include <BAN/Vector.h>
#include <kernel/Device.h>
namespace Kernel
{
@@ -13,35 +14,37 @@ namespace Kernel
uint8_t data4[8];
};
class StorageDevice
class StorageDevice;
class Partition
{
public:
struct Partition
{
Partition(StorageDevice&, const GUID&, const GUID&, uint64_t, uint64_t, uint64_t, const char*);
Partition(StorageDevice&, const GUID&, const GUID&, uint64_t, uint64_t, uint64_t, const char*);
const GUID& type() const { return m_type; }
const GUID& guid() const { return m_guid; }
uint64_t lba_start() const { return m_lba_start; }
uint64_t lba_end() const { return m_lba_end; }
uint64_t attributes() const { return m_attributes; }
const char* name() const { return m_name; }
const StorageDevice& device() const { return m_device; }
const GUID& partition_type() const { return m_type; }
const GUID& partition_guid() const { return m_guid; }
uint64_t lba_start() const { return m_lba_start; }
uint64_t lba_end() const { return m_lba_end; }
uint64_t attributes() const { return m_attributes; }
const char* label() const { return m_label; }
const StorageDevice& device() const { return m_device; }
BAN::ErrorOr<void> read_sectors(uint64_t lba, uint8_t sector_count, uint8_t* buffer);
BAN::ErrorOr<void> write_sectors(uint64_t lba, uint8_t sector_count, const uint8_t* buffer);
bool is_used() const { uint8_t zero[16] {}; return memcmp(&m_type, zero, 16); }
BAN::ErrorOr<void> read_sectors(uint64_t lba, uint8_t sector_count, uint8_t* buffer);
BAN::ErrorOr<void> write_sectors(uint64_t lba, uint8_t sector_count, const uint8_t* buffer);
bool is_used() const { uint8_t zero[16] {}; return memcmp(&m_type, zero, 16); }
private:
StorageDevice& m_device;
const GUID m_type;
const GUID m_guid;
const uint64_t m_lba_start;
const uint64_t m_lba_end;
const uint64_t m_attributes;
char m_name[36 * 4 + 1];
};
private:
StorageDevice& m_device;
const GUID m_type;
const GUID m_guid;
const uint64_t m_lba_start;
const uint64_t m_lba_end;
const uint64_t m_attributes;
char m_label[36 * 4 + 1];
};
class StorageDevice
{
public:
virtual ~StorageDevice() {}