diff options
Diffstat (limited to 'Private/StorageKit')
| -rw-r--r-- | Private/StorageKit/ATA.hpp | 165 | ||||
| -rw-r--r-- | Private/StorageKit/NVME.hpp | 50 | ||||
| -rw-r--r-- | Private/StorageKit/PRDT.hpp | 2 |
3 files changed, 96 insertions, 121 deletions
diff --git a/Private/StorageKit/ATA.hpp b/Private/StorageKit/ATA.hpp index 279258ca..33b976ae 100644 --- a/Private/StorageKit/ATA.hpp +++ b/Private/StorageKit/ATA.hpp @@ -1,104 +1,87 @@ /* -* ======================================================== -* -* HCore -* Copyright Mahrouss Logic, all rights reserved. -* -* ======================================================== -*/ + * ======================================================== + * + * HCore + * Copyright Mahrouss Logic, all rights reserved. + * + * ======================================================== + */ #pragma once +#include <KernelKit/DebugOutput.hpp> #include <KernelKit/PCI/Dma.hpp> #include <KernelKit/PCI/IO.hpp> #include <NewKit/Defines.hpp> #include <StorageKit/PRDT.hpp> -#include <KernelKit/DebugOutput.hpp> -namespace HCore -{ - enum class PATAType - { - kRead28, - kRead48, - kWrite28, - kWrite48, - kATAUnknown - }; - - const char* ata_read_28(ULong lba); - const char* ata_read_48(ULong lba); - - Int32 ata_write_48(ULong lba, const char *text = nullptr); - Int32 ata_write_28(ULong lba, const char *text = nullptr); - - class PATACommandManager final - { - public: - PATACommandManager() = default; - ~PATACommandManager() = default; - - PATACommandManager &operator=(const PATACommandManager &) = default; - PATACommandManager(const PATACommandManager &) = default; - - public: - static Ref<PATACommandManager> Shared() - { - static Ref<PATACommandManager> manager; - return manager; +namespace HCore { +enum class PATAType { kRead28, kRead48, kWrite28, kWrite48, kATAUnknown }; + +const char *ata_read_28(ULong lba); +const char *ata_read_48(ULong lba); + +Int32 ata_write_48(ULong lba, const char *text = nullptr); +Int32 ata_write_28(ULong lba, const char *text = nullptr); + +class PATACommandManager final { + public: + explicit PATACommandManager() = default; + ~PATACommandManager() = default; + + PATACommandManager &operator=(const PATACommandManager &) = default; + PATACommandManager(const PATACommandManager &) = default; + + public: + static Ref<PATACommandManager> Shared() { + static Ref<PATACommandManager> manager; + return manager; + } + + public: + template <PATAType Command> + ErrorOr<const char *> operator()(ULong lba, + const char *text = nullptr) noexcept { + switch (Command) { + case PATAType::kRead28: + return ErrorOr<const char *>(ata_read_28(lba)); + case PATAType::kRead48: + return ErrorOr<const char *>(ata_read_48(lba)); + case PATAType::kWrite28: { + if (text) { + ata_write_28(lba, text); + kcout << "ErrorOr<CT> ata_read<CT, Command>: Write ATA Command... " + "(Write28)\n"; + + return {}; } - public: - template <PATAType Command> - ErrorOr<const char*> operator()(ULong lba, const char *text = nullptr) noexcept - { - switch (Command) - { - case PATAType::kRead28: - return ErrorOr<const char*>(ata_read_28(lba)); - case PATAType::kRead48: - return ErrorOr<const char*>(ata_read_48(lba)); - case PATAType::kWrite28: - { - if (text) - { - ata_write_28(lba, text); - kcout << "ErrorOr<CT> ata_read<CT, Command>: Write ATA Command... " - "(Write28)\n"; - - return {}; - } - - kcout << "ErrorOr<CT> ata_read<CT, Command>: Bad ATA Command... " - "(Write28)\n"; - - return {}; - } - case PATAType::kWrite48: - { - if (text) - { - ata_write_48(lba, text); - kcout << "ErrorOr<CT> ata_read<CT, Command>: Write ATA Command... " - "(Write48)\n"; - - return {}; - } - - kcout << "ErrorOr<CT> ata_read<CT, Command>: Bad ATA Command... " - "(Write48)\n"; - - return {}; - } - case PATAType::kATAUnknown: - { - kcout << "ErrorOr<CT> ata_read<CT, Command>: Unknown ATA Command...\n"; - return {}; - } - } - - return ErrorOr<const char*>(nullptr); + kcout << "ErrorOr<CT> ata_read<CT, Command>: Bad ATA Command... " + "(Write28)\n"; + + return {}; + } + case PATAType::kWrite48: { + if (text) { + ata_write_48(lba, text); + kcout << "ErrorOr<CT> ata_read<CT, Command>: Write ATA Command... " + "(Write48)\n"; + + return {}; } - }; -} // namespace HCore + kcout << "ErrorOr<CT> ata_read<CT, Command>: Bad ATA Command... " + "(Write48)\n"; + + return {}; + } + case PATAType::kATAUnknown: { + kcout << "ErrorOr<CT> ata_read<CT, Command>: Unknown ATA Command...\n"; + return {}; + } + } + + return ErrorOr<const char *>(nullptr); + } +}; +} // namespace HCore diff --git a/Private/StorageKit/NVME.hpp b/Private/StorageKit/NVME.hpp index 0bfbef52..1b638989 100644 --- a/Private/StorageKit/NVME.hpp +++ b/Private/StorageKit/NVME.hpp @@ -6,43 +6,35 @@ * * ======================================================== */ - + #pragma once #include <KernelKit/Device.hpp> #include <NewKit/OwnPtr.hpp> -namespace HCore -{ - class NVMEPacket; - - class NVMEDevice : public DeviceInterface<NVMEPacket> - { - public: - NVMEDevice(void(*Out)(NVMEPacket outpacket), - void(*In)(NVMEPacket inpacket), - void(*Cleanup)(void)) - : DeviceInterface(Out, In), fCleanup(Cleanup) - {} - - virtual ~NVMEDevice() - { - if (fCleanup) - fCleanup(); - } +namespace HCore { +class NVMEPacket; - public: - NVMEDevice &operator=(const NVMEDevice &) = default; - NVMEDevice(const NVMEDevice &) = default; +class NVMEDevice : public DeviceInterface<NVMEPacket> { + public: + explicit NVMEDevice(void (*Out)(NVMEPacket outpacket), + void (*In)(NVMEPacket inpacket), void (*Cleanup)(void)) + : DeviceInterface(Out, In), fCleanup(Cleanup) {} - virtual const char *Name() const; + virtual ~NVMEDevice() { + if (fCleanup) fCleanup(); + } - public: - OwnPtr<NVMEPacket> operator()(UInt32 dmaLow, UInt32 dmaHigh, SizeT sz); + public: + NVMEDevice &operator=(const NVMEDevice &) = default; + NVMEDevice(const NVMEDevice &) = default; - private: - void(*fCleanup)(void); + virtual const char *Name() const; + public: + OwnPtr<NVMEPacket> operator()(UInt32 dmaLow, UInt32 dmaHigh, SizeT sz); - }; -} // namespace HCore + private: + void (*fCleanup)(void); +}; +} // namespace HCore diff --git a/Private/StorageKit/PRDT.hpp b/Private/StorageKit/PRDT.hpp index d269ee3a..fb7d81ff 100644 --- a/Private/StorageKit/PRDT.hpp +++ b/Private/StorageKit/PRDT.hpp @@ -16,7 +16,7 @@ namespace HCore { class PRDT final { public: - PRDT() = delete; + explicit PRDT() = delete; explicit PRDT(const UIntPtr &physAddr); ~PRDT(); |
