From 9c8942db44b5b9175fca6a588dcda7a38892cb63 Mon Sep 17 00:00:00 2001 From: Amlal Date: Mon, 27 Jan 2025 10:36:44 +0100 Subject: Add new type of kernel panic, patch user password hashing. Tweak scheduler, add System Calls file too Signed-off-by: Amlal --- dev/Kernel/HALKit/AMD64/HalCoreSystemCalls.cc | 5 +++++ dev/Kernel/NewKit/KernelPanic.h | 2 +- dev/Kernel/src/Semaphore.cc | 14 ++++++++------ dev/Kernel/src/User.cc | 16 +++++++++------- dev/Kernel/src/UserProcessScheduler.cc | 4 ++-- 5 files changed, 25 insertions(+), 16 deletions(-) create mode 100644 dev/Kernel/HALKit/AMD64/HalCoreSystemCalls.cc (limited to 'dev') diff --git a/dev/Kernel/HALKit/AMD64/HalCoreSystemCalls.cc b/dev/Kernel/HALKit/AMD64/HalCoreSystemCalls.cc new file mode 100644 index 00000000..75eb1f15 --- /dev/null +++ b/dev/Kernel/HALKit/AMD64/HalCoreSystemCalls.cc @@ -0,0 +1,5 @@ +/* ------------------------------------------- + + Copyright (C) 2025, Amlal EL Mahrouss, all rights reserved. + + ------------------------------------------- */ diff --git a/dev/Kernel/NewKit/KernelPanic.h b/dev/Kernel/NewKit/KernelPanic.h index ec69f5c1..be118dd7 100644 --- a/dev/Kernel/NewKit/KernelPanic.h +++ b/dev/Kernel/NewKit/KernelPanic.h @@ -45,7 +45,7 @@ enum RUNTIME_CHECK RUNTIME_CHECK_FILESYSTEM, RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM, RUNTIME_CHECK_PAGE, - RUNTIME_CHECK_INVALID, + RUNTIME_CHECK_INVALID, RUNTIME_CHECK_COUNT, }; diff --git a/dev/Kernel/src/Semaphore.cc b/dev/Kernel/src/Semaphore.cc index b82efbfe..07434e75 100644 --- a/dev/Kernel/src/Semaphore.cc +++ b/dev/Kernel/src/Semaphore.cc @@ -10,16 +10,18 @@ namespace Kernel { /***********************************************************************************/ - /// @brief Unlocks process out of the semaphore. + /// @brief Unlocks the semaphore. /***********************************************************************************/ Bool Semaphore::Unlock() noexcept { if (fLockingProcess) - fLockingProcess = UserProcess(); - else - return No; + { + fLockingProcess = UserProcess(); + fLockingProcess.Status = ProcessStatusKind::kFrozen; + return Yes; + } - return Yes; + return No; } /***********************************************************************************/ @@ -40,7 +42,7 @@ namespace Kernel /***********************************************************************************/ Bool Semaphore::IsLocked() const { - return fLockingProcess; + return fLockingProcess->Status == ProcessStatusKind::kRunning; } /***********************************************************************************/ diff --git a/dev/Kernel/src/User.cc b/dev/Kernel/src/User.cc index 3c0a18df..1559c23e 100644 --- a/dev/Kernel/src/User.cc +++ b/dev/Kernel/src/User.cc @@ -2,7 +2,7 @@ * ======================================================== * * ZKA - * Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved., all rights reserved. + * Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved., all rights reserved. * * File: User.cc * Purpose: User class, used to provide authentication and security. @@ -16,8 +16,8 @@ #include #include -#define kStdUserType (0xCE) -#define kSuperUserType (0xEC) +#define kStdUserType (0xEE) +#define kSuperUserType (0xEF) /// @file User.cc /// @brief User support. @@ -38,9 +38,9 @@ namespace Kernel kcout << "cred_construct_token: Hashing user password...\r"; - for (Size i_pass = 0; i_pass < length; ++i_pass) + for (SizeT i_pass = 0UL; i_pass < length; ++i_pass) { - const Char& cur_chr = in_password[i_pass]; + const Char cur_chr = in_password[i_pass]; if (cur_chr == 0) break; @@ -143,11 +143,11 @@ namespace Kernel // now check if the password matches. if (rt_string_cmp(password, this->mUserKey, rt_string_len(this->mUserKey)) == 0) { - kcout << "User::Matches: Password is valid.\r"; + kcout << "User::Matches: Password matches.\r"; return Yes; } - kcout << "User::Matches: Password isn't valid.\r"; + kcout << "User::Matches: Password doesn't match.\r"; return No; } @@ -161,6 +161,8 @@ namespace Kernel return lhs.mUserRing != this->mUserRing; } + /// @brief Returns the user's name. + Char* User::Name() noexcept { return this->mUserName; diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index a9a045fa..e484e2f1 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -31,7 +31,7 @@ namespace Kernel STATIC UInt32 kLastExitCode = 0U; /***********************************************************************************/ - /// @brief User Process scheduler global and external reference of thread scheduler. + /// @brief External reference of the thread scheduler. /***********************************************************************************/ STATIC UserProcessScheduler kProcessScheduler; @@ -120,7 +120,7 @@ namespace Kernel if (!this->ProcessMemoryHeap) { - this->ProcessMemoryHeap = new UserProcess::ProcessMemoryHeapList(); + this->ProcessMemoryHeap = new ProcessMemoryHeapList(); this->ProcessMemoryHeap->MemoryEntryPad = pad_amount; this->ProcessMemoryHeap->MemoryEntrySize = sz; -- cgit v1.2.3