From 902bafa5dc8c3ac5fcbf13a5af73e016e9c64685 Mon Sep 17 00:00:00 2001 From: Amlal Date: Thu, 8 May 2025 10:17:30 +0200 Subject: meta(kernel): saving changes to avoid loss. Signed-off-by: Amlal --- dev/kernel/src/BinaryMutex.cc | 2 +- dev/kernel/src/DriveMgr+IO.cc | 22 +++++++++++----------- dev/kernel/src/FS/HeFS+FileSystemParser.cc | 23 ++++++++++++++++------- dev/kernel/src/KernelProcessScheduler.cc | 18 ------------------ dev/kernel/src/KernelTaskScheduler.cc | 18 ++++++++++++++++++ 5 files changed, 46 insertions(+), 37 deletions(-) delete mode 100644 dev/kernel/src/KernelProcessScheduler.cc create mode 100644 dev/kernel/src/KernelTaskScheduler.cc (limited to 'dev/kernel/src') diff --git a/dev/kernel/src/BinaryMutex.cc b/dev/kernel/src/BinaryMutex.cc index 8bf1432e..bbf7a477 100644 --- a/dev/kernel/src/BinaryMutex.cc +++ b/dev/kernel/src/BinaryMutex.cc @@ -12,7 +12,7 @@ namespace Kernel { /// @brief Unlocks the binary mutex. /***********************************************************************************/ Bool BinaryMutex::Unlock() noexcept { - if (fLockingProcess) { + if (fLockingProcess.Status == ProcessStatusKind::kRunning) { fLockingProcess = USER_PROCESS(); fLockingProcess.Status = ProcessStatusKind::kFrozen; diff --git a/dev/kernel/src/DriveMgr+IO.cc b/dev/kernel/src/DriveMgr+IO.cc index 4c9b20e0..9137c91e 100644 --- a/dev/kernel/src/DriveMgr+IO.cc +++ b/dev/kernel/src/DriveMgr+IO.cc @@ -17,10 +17,10 @@ * *************************************************************/ -/// Useful macros. +/// Useful macros regarding the IFS. -#define rtl_nefs_write(DRV, TRAITS, MP) (MP->DRV()).fOutput(TRAITS) -#define rtl_nefs_read(DRV, TRAITS, MP) (MP->DRV()).fInput(TRAITS) +#define fsi_ifs_write(DRV, TRAITS, MP) (MP->DRV()).fOutput(TRAITS) +#define fsi_ifs_read(DRV, TRAITS, MP) (MP->DRV()).fInput(TRAITS) namespace Kernel { /// @brief Read from newfs disk. @@ -35,19 +35,19 @@ Int32 fs_ifs_read(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex switch (DrvIndex) { case MountpointInterface::kDriveIndexA: { - rtl_nefs_read(A, DrvTrait.fPacket, Mnt); + fsi_ifs_read(A, DrvTrait.fPacket, Mnt); break; } case MountpointInterface::kDriveIndexB: { - rtl_nefs_read(B, DrvTrait.fPacket, Mnt); + fsi_ifs_read(B, DrvTrait.fPacket, Mnt); break; } case MountpointInterface::kDriveIndexC: { - rtl_nefs_read(C, DrvTrait.fPacket, Mnt); + fsi_ifs_read(C, DrvTrait.fPacket, Mnt); break; } case MountpointInterface::kDriveIndexD: { - rtl_nefs_read(D, DrvTrait.fPacket, Mnt); + fsi_ifs_read(D, DrvTrait.fPacket, Mnt); break; } } @@ -67,19 +67,19 @@ Int32 fs_ifs_write(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvInde switch (DrvIndex) { case MountpointInterface::kDriveIndexA: { - rtl_nefs_write(A, DrvTrait.fPacket, Mnt); + fsi_ifs_write(A, DrvTrait.fPacket, Mnt); break; } case MountpointInterface::kDriveIndexB: { - rtl_nefs_write(B, DrvTrait.fPacket, Mnt); + fsi_ifs_write(B, DrvTrait.fPacket, Mnt); break; } case MountpointInterface::kDriveIndexC: { - rtl_nefs_write(C, DrvTrait.fPacket, Mnt); + fsi_ifs_write(C, DrvTrait.fPacket, Mnt); break; } case MountpointInterface::kDriveIndexD: { - rtl_nefs_write(D, DrvTrait.fPacket, Mnt); + fsi_ifs_write(D, DrvTrait.fPacket, Mnt); break; } } diff --git a/dev/kernel/src/FS/HeFS+FileSystemParser.cc b/dev/kernel/src/FS/HeFS+FileSystemParser.cc index a324da2a..d66c4a53 100644 --- a/dev/kernel/src/FS/HeFS+FileSystemParser.cc +++ b/dev/kernel/src/FS/HeFS+FileSystemParser.cc @@ -422,6 +422,8 @@ namespace Detail { else --root->fINDCount; + root->fChecksum = ke_calculate_crc32((Char*) root, sizeof(HEFS_BOOT_NODE)); + mnt->fPacket.fPacketLba = mnt->fLbaStart; mnt->fPacket.fPacketSize = sizeof(HEFS_BOOT_NODE); mnt->fPacket.fPacketContent = root; @@ -584,9 +586,9 @@ namespace Detail { SizeT cnt = 0ULL; while (cnt < kHeFSSliceCount) { - HEFS_INODE_SLICE& slice = node->fSlices[cnt]; - slice.fBase = offset; - slice.fLength = kHeFSBlockLen; + HEFS_SLICE_NODE& slice = node->fSlices[cnt]; + slice.fBase = offset; + slice.fLength = kHeFSBlockLen; offset += kHeFSBlockLen; ++cnt; @@ -601,10 +603,14 @@ namespace Detail { root->fStartIN += sizeof(HEFS_INDEX_NODE); root->fStartBlock += (kHeFSSliceCount * kHeFSBlockLen); + root->fChecksum = ke_calculate_crc32((Char*) root, sizeof(HEFS_BOOT_NODE)); + mnt->fPacket.fPacketLba = mnt->fLbaStart; mnt->fPacket.fPacketSize = sizeof(HEFS_BOOT_NODE); mnt->fPacket.fPacketContent = root; + mnt->fOutput(mnt->fPacket); + mm_delete_heap(dir); return YES; @@ -626,6 +632,8 @@ namespace Detail { root->fStartIN -= sizeof(HEFS_INDEX_NODE); root->fStartBlock -= (kHeFSSliceCount * kHeFSBlockLen); + root->fChecksum = ke_calculate_crc32((Char*) root, sizeof(HEFS_BOOT_NODE)); + mnt->fPacket.fPacketLba = mnt->fLbaStart; mnt->fPacket.fPacketSize = sizeof(HEFS_BOOT_NODE); mnt->fPacket.fPacketContent = root; @@ -1004,11 +1012,9 @@ _Output Bool HeFileSystemParser::INodeManip(_Input DriveTrait* mnt, VoidPtr bloc if (!KStringBuilder::Equals(root->fMagic, kHeFSMagic) || root->fVersion != kHeFSVersion) { err_global_get() = kErrorDisk; - return YES; + return NO; } - if (root->fStartBlock > root->fEndBlock) return NO; - SizeT cnt = block_sz / sizeof(HEFS_INDEX_NODE); auto nodes = Detail::hefsi_fetch_in(root, mnt, dir, name, kind, &cnt); @@ -1021,7 +1027,7 @@ _Output Bool HeFileSystemParser::INodeManip(_Input DriveTrait* mnt, VoidPtr bloc SizeT cnt_slice = 0; while (cnt_slice < kHeFSSliceCount) { - struct HEFS_INODE_SLICE& slice = start.fSlices[cnt_slice]; + HEFS_SLICE_NODE& slice = start.fSlices[cnt_slice]; mnt->fPacket.fPacketLba = slice.fBase + start.fOffsetSlices; mnt->fPacket.fPacketSize = kHeFSBlockLen; @@ -1174,6 +1180,9 @@ Boolean fs_init_hefs(Void) { Utf8Char contents_1[kHeFSBlockLen] = u8"ロケットにはジエットエンジン\r"; + MUST_PASS(parser.INodeManip(&kMountPoint, contents_1, kHeFSBlockLen, u8"/boot", + kHeFSFileKindRegular, u8"ジェット警察.txt", NO)); + MUST_PASS(parser.INodeManip(&kMountPoint, contents_1, kHeFSBlockLen, u8"/boot", kHeFSFileKindRegular, u8"ジェット警察.txt", YES)); diff --git a/dev/kernel/src/KernelProcessScheduler.cc b/dev/kernel/src/KernelProcessScheduler.cc deleted file mode 100644 index d0abfce0..00000000 --- a/dev/kernel/src/KernelProcessScheduler.cc +++ /dev/null @@ -1,18 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. - - FILE: KernelProcessScheduler.cc - PURPOSE: Privileged/Ring-0 process scheduler. - -------------------------------------------- */ - -#include - -/***********************************************************************************/ -/// @file KernelProcessScheduler.cc -/// @brief Privileged/Ring-0 process scheduler. -/// @author Amlal El Mahrouss (amlal@nekernel.org) -/***********************************************************************************/ - -namespace Kernel {} // namespace Kernel \ No newline at end of file diff --git a/dev/kernel/src/KernelTaskScheduler.cc b/dev/kernel/src/KernelTaskScheduler.cc new file mode 100644 index 00000000..1997c175 --- /dev/null +++ b/dev/kernel/src/KernelTaskScheduler.cc @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. + + FILE: KernelTaskScheduler.cc + PURPOSE: Kernel Task scheduler. + +------------------------------------------- */ + +#include + +/***********************************************************************************/ +/// @file KernelTaskScheduler.cc +/// @brief Kernel Task scheduler. +/// @author Amlal El Mahrouss (amlal@nekernel.org) +/***********************************************************************************/ + +namespace Kernel {} // namespace Kernel \ No newline at end of file -- cgit v1.2.3