diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-21 10:33:14 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-21 10:33:14 +0100 |
| commit | 581fa445d2a6995a78d033deefab58951ab6ff48 (patch) | |
| tree | 538171a14c43d76542b9390ff1f230b090d30b16 /dev/Kernel/src/FS/NeFS+IO.cc | |
| parent | ca6831144b352e9d8fb7a514cfe717426ad6fa7b (diff) | |
ADD: Moved filesystem specific code to FS/
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src/FS/NeFS+IO.cc')
| -rw-r--r-- | dev/Kernel/src/FS/NeFS+IO.cc | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/dev/Kernel/src/FS/NeFS+IO.cc b/dev/Kernel/src/FS/NeFS+IO.cc new file mode 100644 index 00000000..040f0171 --- /dev/null +++ b/dev/Kernel/src/FS/NeFS+IO.cc @@ -0,0 +1,101 @@ +/* ------------------------------------------- + + Copyright (C) 2024, MediaSwirl, all rights reserved. + +------------------------------------------- */ + +#include <KernelKit/DriveMgr.h> +#include <KernelKit/FileMgr.h> + +/************************************************************* + * + * File: NeFS+IO.cc + * Purpose: Filesystem to mountpoint interface. + * Date: 3/26/24 + * + * Copyright (C) 2024, MediaSwirl, all rights reserved., all rights reserved. + * + *************************************************************/ + +#ifdef __FSKIT_INCLUDES_NEFS__ + +#include <FirmwareKit/EPM.h> + +/// Useful macros. + +#define rtl_nefs_write(DRV, TRAITS, MP) (MP->DRV()).fOutput(&TRAITS) +#define rtl_nefs_read(DRV, TRAITS, MP) (MP->DRV()).fInput(&TRAITS) + +using namespace Kernel; + +/// @brief Read from newfs disk. +/// @param Mnt mounted interface. +/// @param DrvTrait drive info +/// @param DrvIndex drive index. +/// @return +Int32 fs_nefs_read(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex) +{ + if (!Mnt) + return 1; + + DrvTrait.fPacket.fPacketGood = false; + + switch (DrvIndex) + { + case kNeFSSubDriveA: { + rtl_nefs_read(A, DrvTrait.fPacket, Mnt); + break; + } + case kNeFSSubDriveB: { + rtl_nefs_read(B, DrvTrait.fPacket, Mnt); + break; + } + case kNeFSSubDriveC: { + rtl_nefs_read(C, DrvTrait.fPacket, Mnt); + break; + } + case kNeFSSubDriveD: { + rtl_nefs_read(D, DrvTrait.fPacket, Mnt); + break; + } + } + + return DrvTrait.fPacket.fPacketGood; +} + +/// @brief Write to newfs disk. +/// @param Mnt mounted interface. +/// @param DrvTrait drive info +/// @param DrvIndex drive index. +/// @return +Int32 fs_nefs_write(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex) +{ + if (!Mnt) + return 1; + + DrvTrait.fPacket.fPacketGood = false; + + switch (DrvIndex) + { + case kNeFSSubDriveA: { + rtl_nefs_write(A, DrvTrait.fPacket, Mnt); + break; + } + case kNeFSSubDriveB: { + rtl_nefs_write(B, DrvTrait.fPacket, Mnt); + break; + } + case kNeFSSubDriveC: { + rtl_nefs_write(C, DrvTrait.fPacket, Mnt); + break; + } + case kNeFSSubDriveD: { + rtl_nefs_write(D, DrvTrait.fPacket, Mnt); + break; + } + } + + return DrvTrait.fPacket.fPacketGood; +} + +#endif // ifdef __FSKIT_INCLUDES_NEFS__ |
