summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/DriveMgr.cc
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-04-29 16:52:05 +0200
committerAmlal <amlal@nekernel.org>2025-04-29 16:52:05 +0200
commitbbdc9527d81cbafa74375ed108009f30e340d1b0 (patch)
tree910fefa714179fd7d19eeb72dcd0b52388fc1777 /dev/kernel/src/DriveMgr.cc
parentcd87bd3a926f1eb76f6b8aa6cb14f706b4fccc5a (diff)
dev(kernel, HeFS): reworking filesystem to find an hybrid solution regarding memory footprint (unstable changes)
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/DriveMgr.cc')
-rw-r--r--dev/kernel/src/DriveMgr.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/dev/kernel/src/DriveMgr.cc b/dev/kernel/src/DriveMgr.cc
index b0f78ae4..37c8b439 100644
--- a/dev/kernel/src/DriveMgr.cc
+++ b/dev/kernel/src/DriveMgr.cc
@@ -31,9 +31,11 @@ STATIC UInt16 kAHCIPortsImplemented [[maybe_unused]] = 0UL;
/// @brief reads from an ATA drive.
/// @param pckt Packet structure (fPacketContent must be non null)
/// @return
-Void io_drv_input(DriveTrait::DrivePacket pckt) {
+Void io_drv_input(DriveTrait::DrivePacket& pckt) {
#ifdef __AHCI__
drv_std_read(pckt.fPacketLba, (Char*) pckt.fPacketContent, kAHCISectorSize, pckt.fPacketSize);
+
+ if (err_global_get() != kErrorSuccess) pckt.fPacketGood = NO;
#elif defined(__ATA_PIO__) || defined(__ATA_DMA__)
drv_std_read(pckt.fPacketLba, kATAIO, kATAMaster, (Char*) pckt.fPacketContent, kATASectorSize,
pckt.fPacketSize);
@@ -43,7 +45,7 @@ Void io_drv_input(DriveTrait::DrivePacket pckt) {
/// @brief Writes to an ATA drive.
/// @param pckt the packet to write.
/// @return
-Void io_drv_output(DriveTrait::DrivePacket pckt) {
+Void io_drv_output(DriveTrait::DrivePacket& pckt) {
if (pckt.fPacketReadOnly) {
pckt.fPacketGood = NO;
return;
@@ -51,6 +53,8 @@ Void io_drv_output(DriveTrait::DrivePacket pckt) {
#ifdef __AHCI__
drv_std_write(pckt.fPacketLba, (Char*) pckt.fPacketContent, kAHCISectorSize, pckt.fPacketSize);
+
+ if (err_global_get() != kErrorSuccess) pckt.fPacketGood = NO;
#elif defined(__ATA_PIO__) || defined(__ATA_DMA__)
drv_std_write(pckt.fPacketLba, kATAIO, kATAMaster, (Char*) pckt.fPacketContent, kATASectorSize,
pckt.fPacketSize);
@@ -60,7 +64,7 @@ Void io_drv_output(DriveTrait::DrivePacket pckt) {
/// @brief Executes a disk check on the ATA drive.
/// @param pckt the packet to read.
/// @return
-Void io_drv_init(DriveTrait::DrivePacket pckt) {
+Void io_drv_init(DriveTrait::DrivePacket& pckt) {
NE_UNUSED(pckt);
#if defined(__ATA_PIO__) || defined(__ATA_DMA__)
@@ -116,7 +120,7 @@ const Char* io_drv_kind(Void) {
/// @brief Unimplemented drive function.
/// @param pckt the packet to read.
-Void io_drv_unimplemented(DriveTrait::DrivePacket pckt) noexcept {
+Void io_drv_unimplemented(DriveTrait::DrivePacket& pckt) noexcept {
NE_UNUSED(pckt);
}