diff options
| author | Amlal <amlal@nekernel.org> | 2025-05-08 10:17:30 +0200 |
|---|---|---|
| committer | Amlal <amlal@nekernel.org> | 2025-05-08 10:17:30 +0200 |
| commit | 902bafa5dc8c3ac5fcbf13a5af73e016e9c64685 (patch) | |
| tree | 01aa45950fa825ad616ee3f8e8a19c7156708aab /dev/kernel/src | |
| parent | 8c0d7efb90585bf53b9f7496c2883af5ffa6ee68 (diff) | |
meta(kernel): saving changes to avoid loss.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src')
| -rw-r--r-- | dev/kernel/src/BinaryMutex.cc | 2 | ||||
| -rw-r--r-- | dev/kernel/src/DriveMgr+IO.cc | 22 | ||||
| -rw-r--r-- | dev/kernel/src/FS/HeFS+FileSystemParser.cc | 23 | ||||
| -rw-r--r-- | dev/kernel/src/KernelTaskScheduler.cc (renamed from dev/kernel/src/KernelProcessScheduler.cc) | 10 |
4 files changed, 33 insertions, 24 deletions
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; @@ -1175,6 +1181,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)); return YES; diff --git a/dev/kernel/src/KernelProcessScheduler.cc b/dev/kernel/src/KernelTaskScheduler.cc index d0abfce0..1997c175 100644 --- a/dev/kernel/src/KernelProcessScheduler.cc +++ b/dev/kernel/src/KernelTaskScheduler.cc @@ -2,16 +2,16 @@ Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. - FILE: KernelProcessScheduler.cc - PURPOSE: Privileged/Ring-0 process scheduler. + FILE: KernelTaskScheduler.cc + PURPOSE: Kernel Task scheduler. ------------------------------------------- */ -#include <KernelKit/ProcessScheduler.h> +#include <KernelKit/KernelTaskScheduler.h> /***********************************************************************************/ -/// @file KernelProcessScheduler.cc -/// @brief Privileged/Ring-0 process scheduler. +/// @file KernelTaskScheduler.cc +/// @brief Kernel Task scheduler. /// @author Amlal El Mahrouss (amlal@nekernel.org) /***********************************************************************************/ |
