From 581fa445d2a6995a78d033deefab58951ab6ff48 Mon Sep 17 00:00:00 2001 From: Amlal Date: Tue, 21 Jan 2025 10:33:14 +0100 Subject: ADD: Moved filesystem specific code to FS/ Signed-off-by: Amlal --- dev/Kernel/src/FS/NeFS+IO.cc | 101 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 dev/Kernel/src/FS/NeFS+IO.cc (limited to 'dev/Kernel/src/FS/NeFS+IO.cc') 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 +#include + +/************************************************************* + * + * 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 + +/// 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__ -- cgit v1.2.3