summaryrefslogtreecommitdiffhomepage
path: root/dev/Boot/BootKit/HW/SATA.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-12-26 21:19:14 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-12-26 21:19:14 +0100
commit486425ed00acec134f8799bdde64bfd093c5fb55 (patch)
tree5104af49b56f39d0b14941d76f9d6d746cd1677b /dev/Boot/BootKit/HW/SATA.h
parentc0f7f3f300d603d355fc7ec5be317afe1f0ee1b6 (diff)
IMPL: A lot of new changes, see details.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Boot/BootKit/HW/SATA.h')
-rw-r--r--dev/Boot/BootKit/HW/SATA.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/dev/Boot/BootKit/HW/SATA.h b/dev/Boot/BootKit/HW/SATA.h
new file mode 100644
index 00000000..3a849d66
--- /dev/null
+++ b/dev/Boot/BootKit/HW/SATA.h
@@ -0,0 +1,46 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024, Theater Quality Inc, all rights reserved.
+
+------------------------------------------- */
+
+#pragma once
+
+#include <CompilerKit/CompilerKit.h>
+#include <Mod/AHCI/AHCI.h>
+
+class BootDeviceSATA final
+{
+public:
+ explicit BootDeviceSATA() noexcept;
+ ~BootDeviceSATA() = default;
+
+ ZKA_COPY_DEFAULT(BootDeviceSATA);
+
+ struct SATATrait final
+ {
+ Kernel::SizeT mBase{1024};
+ Kernel::Boolean mErr{false};
+ Kernel::Boolean mDetected{false};
+
+ operator bool()
+ {
+ return !this->mErr;
+ }
+ };
+
+ operator bool()
+ {
+ return this->Leak().mDetected;
+ }
+
+ BootDeviceSATA& Read(Kernel::WideChar* Buf, const Kernel::SizeT& SecCount);
+ BootDeviceSATA& Write(Kernel::WideChar* Buf, const Kernel::SizeT& SecCount);
+
+ SATATrait& Leak();
+
+private:
+ SATATrait mTrait;
+};
+
+#define kAHCISectorSz 4096