summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/Storage/AHCIDeviceInterface.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-03-31 15:40:16 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-03-31 15:40:16 +0200
commitaaad58f2d6a56830860cb6ddef099096b089c389 (patch)
tree99c6e18b73c6c17463ffa0bd93de62edf71bcddb /dev/kernel/src/Storage/AHCIDeviceInterface.cc
parentb3dfc99a0ac690cf3de2348a8887bfa4bef243bc (diff)
storage: unify naming for drive protocol interface
Renamed `fDriveKind` to `fProtocol` across kernel storage subsystems to clarify its purpose as a protocol identifier (e.g., "AHCI", "ATA-") rather than a general "kind" classification. Updated all affected header and source files: - DriveMgr, HeFS, AHCI, ATADeviceInterface, and NeFS now consistently reference `fProtocol()` instead of `fDriveKind()`. - Added streaming operators (`<<`, `>>`) to AHCI and ATA device interfaces for improved mountpoint interaction. - Promoted `GetPortsImplemented()` and `SetPortsImplemented()` to public for AHCI device configuration. - Added null checks and protocol verification logic in stream operators. This refactor improves clarity and consistency when working with storage devices across the kernel. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/Storage/AHCIDeviceInterface.cc')
-rw-r--r--dev/kernel/src/Storage/AHCIDeviceInterface.cc76
1 files changed, 76 insertions, 0 deletions
diff --git a/dev/kernel/src/Storage/AHCIDeviceInterface.cc b/dev/kernel/src/Storage/AHCIDeviceInterface.cc
index 954d9f5b..9419dc4e 100644
--- a/dev/kernel/src/Storage/AHCIDeviceInterface.cc
+++ b/dev/kernel/src/Storage/AHCIDeviceInterface.cc
@@ -34,3 +34,79 @@ const Char* AHCIDeviceInterface::Name() const
{
return "/dev/sda{}";
}
+
+/// @brief Output operator.
+/// @param Data the disk mountpoint.
+/// @return the class itself after operation.
+AHCIDeviceInterface& AHCIDeviceInterface::operator<<(MountpointInterface* Data)
+{
+ if (!Data)
+ return *this;
+
+ for (SizeT driveCount = 0; driveCount < kDriveMaxCount; ++driveCount)
+ {
+ auto interface = Data->GetAddressOf(driveCount);
+
+ if ((interface) && rt_string_cmp((interface)->fProtocol(), "AHCI", rt_string_len("AHCI")) == 0)
+ {
+ continue;
+ }
+ else if ((interface) &&
+ rt_string_cmp((interface)->fProtocol(), "AHCI", rt_string_len("AHCI")) != 0)
+ {
+ return *this;
+ }
+ }
+
+ return (AHCIDeviceInterface&)IDeviceObject<MountpointInterface*>::operator<<(
+ Data);
+}
+
+/// @brief Input operator.
+/// @param Data the disk mountpoint.
+/// @return the class itself after operation.
+AHCIDeviceInterface& AHCIDeviceInterface::operator>>(MountpointInterface* Data)
+{
+ if (!Data)
+ return *this;
+
+ for (SizeT driveCount = 0; driveCount < kDriveMaxCount; ++driveCount)
+ {
+ auto interface = Data->GetAddressOf(driveCount);
+
+ // really check if it's ATA.
+ if ((interface) && rt_string_cmp((interface)->fProtocol(), "AHCI", rt_string_len("AHCI")) == 0)
+ {
+ continue;
+ }
+ else if ((interface) &&
+ rt_string_cmp((interface)->fProtocol(), "AHCI", rt_string_len("AHCI")) != 0)
+ {
+ return *this;
+ }
+ }
+
+ return (AHCIDeviceInterface&)IDeviceObject<MountpointInterface*>::operator>>(
+ Data);
+}
+
+const UInt16& AHCIDeviceInterface::GetPortsImplemented()
+{
+ return this->fPortsImplemented;
+}
+
+Void AHCIDeviceInterface::SetPortsImplemented(const UInt16& pi)
+{
+ MUST_PASS(pi > 0);
+ this->fPortsImplemented = pi;
+}
+
+const UInt32& AHCIDeviceInterface::GetIndex()
+{
+ return this->fDriveIndex;
+}
+
+Void AHCIDeviceInterface::SetIndex(const UInt32& drv)
+{
+ MUST_PASS(MountpointInterface::kDriveIndexInvalid != drv);
+} \ No newline at end of file