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/zka/KernelKit | |
| 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/zka/KernelKit')
| -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 |
3 files changed, 50 insertions, 48 deletions
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; |
