diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2024-10-26 21:55:26 +0200 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2024-10-26 21:55:26 +0200 |
| commit | d2682692ba4b5261335f8fe61c91d34b19fc6e6c (patch) | |
| tree | 77379dbc797d1dbd53b387386148b137af175c75 /dev | |
| parent | 6dcf5b87da65de2254d6102f567183eaeca03088 (diff) | |
FIX: Improved kernel code and finding the root cause of the GPF and Double Fault.
(Mostly includes KernelKit changes, also CompilerKit has changed regarding versioning)
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/zba/src/BootFileReader.cc | 4 | ||||
| -rw-r--r-- | dev/zka/CompilerKit/Version.h | 4 | ||||
| -rw-r--r-- | dev/zka/KernelKit/Defines.h | 6 | ||||
| -rw-r--r-- | dev/zka/KernelKit/FileMgr.h | 71 | ||||
| -rw-r--r-- | dev/zka/KernelKit/UserProcessScheduler.h | 21 | ||||
| -rw-r--r-- | dev/zka/src/HardwareThreadScheduler.cc | 3 | ||||
| -rw-r--r-- | dev/zka/src/NeFS+FileMgr.cc | 4 | ||||
| -rw-r--r-- | dev/zka/src/PEFCodeMgr.cc | 2 | ||||
| -rw-r--r-- | dev/zka/src/User.cc | 13 | ||||
| -rw-r--r-- | dev/zka/src/UserProcessScheduler.cc | 3 |
10 files changed, 67 insertions, 64 deletions
diff --git a/dev/zba/src/BootFileReader.cc b/dev/zba/src/BootFileReader.cc index ab5d53ee..b5866d5a 100644 --- a/dev/zba/src/BootFileReader.cc +++ b/dev/zba/src/BootFileReader.cc @@ -133,9 +133,9 @@ Void Boot::BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr out_ EfiFileInfo newPtrInfo; UInt32 szInfo = 0; - EfiGUID cFileInfoGUID = EFI_FILE_INFO_GUID; + EfiGUID kFileInfoGUID = EFI_FILE_INFO_GUID; - if (mFile->GetInfo(mFile, &cFileInfoGUID, &szInfo, &newPtrInfo) == kEfiOk) + if (mFile->GetInfo(mFile, &kFileInfoGUID, &szInfo, &newPtrInfo) == kEfiOk) { if (newPtrInfo.FileSize < readUntil) readUntil = newPtrInfo.FileSize; diff --git a/dev/zka/CompilerKit/Version.h b/dev/zka/CompilerKit/Version.h index 460fe2ee..1a4608b0 100644 --- a/dev/zka/CompilerKit/Version.h +++ b/dev/zka/CompilerKit/Version.h @@ -3,5 +3,5 @@ #pragma once /// <COMMIT NUMBER>.<YEAR>.<PROGRAM VERSION> -#define BOOTLOADER_VERSION "930.2024.1" -#define KERNEL_VERSION "930.2024.1" +#define BOOTLOADER_VERSION "1010.2024.110" +#define KERNEL_VERSION "1010.2024.110" diff --git a/dev/zka/KernelKit/Defines.h b/dev/zka/KernelKit/Defines.h index 48befc8e..ff214b15 100644 --- a/dev/zka/KernelKit/Defines.h +++ b/dev/zka/KernelKit/Defines.h @@ -8,4 +8,8 @@ #include <NewKit/Defines.h> -#define KERNELKIT_VERSION "1.02" +#define KERNELKIT_VERSION "1.0.2" +#define KERNELKIT_VERSION_BCD 0x01020 + +class UserProcessScheduler; +class UserProcess; diff --git a/dev/zka/KernelKit/FileMgr.h b/dev/zka/KernelKit/FileMgr.h index af302a64..8b7636e2 100644 --- a/dev/zka/KernelKit/FileMgr.h +++ b/dev/zka/KernelKit/FileMgr.h @@ -23,6 +23,11 @@ #include <FSKit/NeFS.h> #endif // __FSKIT_INCLUDES_NEFS__ +#ifdef __FSKIT_INCLUDES_HPFS__ +#include <FSKit/HPFS.h> +#endif // __FSKIT_INCLUDES_HPFS__ + + #include <CompilerKit/CompilerKit.h> #include <HintKit/CompilerHint.h> #include <KernelKit/LPC.h> @@ -35,21 +40,21 @@ /// @brief Filesystem manager, abstraction over mounted filesystem. /// Works like the VFS or IFS. -#define cRestrictR "r" -#define cRestrictRB "rb" -#define cRestrictW "w" -#define cRestrictWB "rw" -#define cRestrictRWB "rwb" +#define kRestrictR "r" +#define kRestrictRB "rb" +#define kRestrictW "w" +#define kRestrictWB "rw" +#define kRestrictRWB "rwb" -#define cRestrictMax 5 +#define kRestrictMax (5U) #define node_cast(PTR) reinterpret_cast<Kernel::NodePtr>(PTR) /** @note Refer to first enum. */ -#define cFileOpsCount 4 -#define cFileMimeGeneric "n-application-kind/all" +#define kFileOpsCount (4U) +#define kFileMimeGeneric "n-application-kind/all" /** @brief invalid position. (n-pos) */ #define kNPos (SizeT)(-1); @@ -58,14 +63,14 @@ namespace Kernel { enum { - cFileWriteAll = 100, - cFileReadAll = 101, - cFileReadChunk = 102, - cFileWriteChunk = 103, - cFileIOCnt = (cFileWriteChunk - cFileWriteAll) + 1, + kFileWriteAll = 100, + kFileReadAll = 101, + kFileReadChunk = 102, + kFileWriteChunk = 103, + kFileIOCnt = (kFileWriteChunk - kFileWriteAll) + 1, // file flags - cFileFlagRsrc = 104, - cFileFlagData = 105, + kFileFlagRsrc = 104, + kFileFlagData = 105, }; typedef VoidPtr NodePtr; @@ -219,7 +224,7 @@ namespace Kernel if (man) { - man->Write(fFile, data, cFileWriteAll); + man->Write(fFile, data, kFileWriteAll); return ErrorOr<Int64>(0); } @@ -238,7 +243,7 @@ namespace Kernel if (man) { - VoidPtr ret = man->Read(fFile, cFileReadAll, 0); + VoidPtr ret = man->Read(fFile, kFileReadAll, 0); return ret; } @@ -260,7 +265,7 @@ namespace Kernel if (man) { - man->Write(fName, fFile, data, cFileWriteAll); + man->Write(fName, fFile, data, kFileWriteAll); return ErrorOr<Int64>(0); } @@ -279,7 +284,7 @@ namespace Kernel if (man) { - VoidPtr ret = man->Read(fName, fFile, cFileReadAll, 0); + VoidPtr ret = man->Read(fName, fFile, kFileReadAll, 0); return ret; } @@ -299,7 +304,7 @@ namespace Kernel if (man) { man->Seek(fFile, offset); - auto ret = man->Read(fFile, cFileReadChunk, sz); + auto ret = man->Read(fFile, kFileReadChunk, sz); return ret; } @@ -320,7 +325,7 @@ namespace Kernel if (man) { man->Seek(fFile, offset); - man->Write(fFile, data, sz, cFileReadChunk); + man->Write(fFile, data, sz, kFileReadChunk); } } @@ -352,7 +357,7 @@ namespace Kernel private: NodePtr fFile{nullptr}; Int32 fFileRestrict{}; - const Char* fMime{cFileMimeGeneric}; + const Char* fMime{kFileMimeGeneric}; }; using FileStreamUTF8 = FileStream<Char>; @@ -375,35 +380,35 @@ namespace Kernel Int32 fMappedTo; }; - const SizeT cRestrictCount = cRestrictMax; - const RESTRICT_MAP cRestrictList[] = { + const SizeT kRestrictCount = kRestrictMax; + const RESTRICT_MAP kRestrictList[] = { { - .fRestrict = cRestrictR, + .fRestrict = kRestrictR, .fMappedTo = eRestrictRead, }, { - .fRestrict = cRestrictRB, + .fRestrict = kRestrictRB, .fMappedTo = eRestrictReadBinary, }, { - .fRestrict = cRestrictRWB, + .fRestrict = kRestrictRWB, .fMappedTo = eRestrictReadWriteBinary, }, { - .fRestrict = cRestrictW, + .fRestrict = kRestrictW, .fMappedTo = eRestrictWrite, }, { - .fRestrict = cRestrictWB, + .fRestrict = kRestrictWB, .fMappedTo = eRestrictReadWrite, }}; - for (SizeT index = 0; index < cRestrictCount; ++index) + for (SizeT index = 0; index < kRestrictCount; ++index) { - if (rt_string_cmp(restrict_type, cRestrictList[index].fRestrict, - rt_string_len(cRestrictList[index].fRestrict)) == 0) + if (rt_string_cmp(restrict_type, kRestrictList[index].fRestrict, + rt_string_len(kRestrictList[index].fRestrict)) == 0) { - fFileRestrict = cRestrictList[index].fMappedTo; + fFileRestrict = kRestrictList[index].fMappedTo; break; } } diff --git a/dev/zka/KernelKit/UserProcessScheduler.h b/dev/zka/KernelKit/UserProcessScheduler.h index c819b708..2a525ee7 100644 --- a/dev/zka/KernelKit/UserProcessScheduler.h +++ b/dev/zka/KernelKit/UserProcessScheduler.h @@ -35,13 +35,13 @@ namespace Kernel class UserProcessScheduler; class UserProcessHelper; - //! @brief UserProcess identifier. + //! @brief Local Process identifier. typedef Int64 ProcessID; - //! @brief UserProcess name length. + //! @brief Local Process name length. inline constexpr SizeT kProcessLen = 256U; - //! @brief UserProcess status enum. + //! @brief Local Process status enum. enum class ProcessStatusKind : Int32 { kStarting, @@ -138,10 +138,8 @@ namespace Kernel ~UserProcess() = default; - ZKA_COPY_DEFAULT(UserProcess) - public: - const UInt32& GetExitCode() noexcept; + ZKA_COPY_DEFAULT(UserProcess) public: Char Name[kProcessLen] = {"Process"}; @@ -151,16 +149,9 @@ namespace Kernel AffinityKind Affinity{AffinityKind::kStandard}; ProcessStatusKind Status{ProcessStatusKind::kDead}; UInt8* StackReserve{nullptr}; - - //! @brief Code Image. ImagePtr Image{nullptr}; - SizeT StackSize{kSchedMaxStackSz}; - - //! @brief Shared library handle, reserved for kExectuableDLLKind types of executables only. IPEFDLLObject* PefDLLDelegate{nullptr}; - - // Memory usage. SizeT MemoryCursor{0}; SizeT MemoryLimit{kSchedMaxMemoryLimit}; @@ -211,8 +202,10 @@ namespace Kernel ///! @brief Wakes up threads. Void Wake(const bool wakeup = false); - // UserProcess getters. public: + //! @brief Gets the local exit code. + const UInt32& GetExitCode() noexcept; + ///! @brief Get the process's name ///! @example 'C Runtime Library' const Char* GetProcessName() noexcept; diff --git a/dev/zka/src/HardwareThreadScheduler.cc b/dev/zka/src/HardwareThreadScheduler.cc index c1d06531..ddfd0ee7 100644 --- a/dev/zka/src/HardwareThreadScheduler.cc +++ b/dev/zka/src/HardwareThreadScheduler.cc @@ -41,6 +41,7 @@ namespace Kernel } //! @brief is the thread busy? + //! @return whether the thread is busy or not. Bool HardwareThread::IsBusy() noexcept { STATIC Int64 busy_timer = 0U; @@ -51,6 +52,8 @@ namespace Kernel fBusy = No; } + ++busy_timer; + return fBusy; } diff --git a/dev/zka/src/NeFS+FileMgr.cc b/dev/zka/src/NeFS+FileMgr.cc index dcc9c3b2..858b4ee0 100644 --- a/dev/zka/src/NeFS+FileMgr.cc +++ b/dev/zka/src/NeFS+FileMgr.cc @@ -172,7 +172,7 @@ namespace Kernel ZKA_UNUSED(flags); if ((reinterpret_cast<NFS_CATALOG_STRUCT*>(node))->Kind == kNeFSCatalogKindFile) - fImpl->WriteCatalog(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), (flags & cFileFlagRsrc ? true : false), data, size, + fImpl->WriteCatalog(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), (flags & kFileFlagRsrc ? true : false), data, size, name); } @@ -190,7 +190,7 @@ namespace Kernel ZKA_UNUSED(flags); if ((reinterpret_cast<NFS_CATALOG_STRUCT*>(node))->Kind == kNeFSCatalogKindFile) - return fImpl->ReadCatalog(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), (flags & cFileFlagRsrc ? true : false), sz, + return fImpl->ReadCatalog(reinterpret_cast<NFS_CATALOG_STRUCT*>(node), (flags & kFileFlagRsrc ? true : false), sz, name); return nullptr; diff --git a/dev/zka/src/PEFCodeMgr.cc b/dev/zka/src/PEFCodeMgr.cc index 44c14b42..7065cdda 100644 --- a/dev/zka/src/PEFCodeMgr.cc +++ b/dev/zka/src/PEFCodeMgr.cc @@ -55,7 +55,7 @@ namespace Kernel PEFLoader::PEFLoader(const Char* path) : fCachedBlob(nullptr), fBad(false), fFatBinary(false) { - fFile.New(const_cast<Char*>(path), cRestrictRB); + fFile.New(const_cast<Char*>(path), kRestrictRB); fPath = StringBuilder::Construct(path).Leak(); auto cPefHeader = "PEF_CONTAINER"; diff --git a/dev/zka/src/User.cc b/dev/zka/src/User.cc index 80a14041..55ef0c60 100644 --- a/dev/zka/src/User.cc +++ b/dev/zka/src/User.cc @@ -11,15 +11,14 @@ */ #include <KernelKit/User.h> - #include <KernelKit/LPC.h> #include <NewKit/Stop.h> #include <KernelKit/FileMgr.h> #include <KernelKit/UserProcessScheduler.h> #include <KernelKit/Heap.h> -#define cStdUser (0xCEEF) -#define cSuperUser (0xECCF) +#define kStdUserType (0xCEEF) +#define kSuperUserType (0xECCF) /// BUGS: 0 @@ -35,19 +34,19 @@ namespace Kernel if (!password || !user) return -1; - kcout << "Constructing password...\r"; + kcout << "Hashing password...\r"; for (Size i_pass = 0; i_pass < length; ++i_pass) { - Char cur_chr = in_password[i_pass]; + Char& cur_chr = in_password[i_pass]; if (cur_chr == 0) break; - password[i_pass] = cur_chr + (user->IsStdUser() ? cStdUser : cSuperUser); + password[i_pass] = cur_chr + (user->IsStdUser() ? kStdUserType : kSuperUserType); } - kcout << "Done constructing password...\r"; + kcout << "Done hashing password!\r"; return 0; } diff --git a/dev/zka/src/UserProcessScheduler.cc b/dev/zka/src/UserProcessScheduler.cc index 844afa5d..090faf32 100644 --- a/dev/zka/src/UserProcessScheduler.cc +++ b/dev/zka/src/UserProcessScheduler.cc @@ -451,8 +451,7 @@ namespace Kernel } else { - if (process.Status == ProcessStatusKind::kRunning) - --process.PTime; + --process.PTime; } } |
