From 86e291120d124dec7244202b1766901a59dfb2e6 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Thu, 1 Aug 2024 18:25:14 +0200 Subject: [IMP] newoskrnl: Add symbol for cred_construct_token, reworked ProcessHeap, new SCI.hxx for SCI and SCM. [IMP] newosldr: Loads the kernel correctly and can launch it, improved erorr handling. [META] newoskrnl, newosldr: Improved code and refactors. Signed-off-by: Amlal EL Mahrouss --- Kernel/KernelKit/PE.hxx | 5 +++++ Kernel/KernelKit/ProcessHeap.hxx | 1 - Kernel/KernelKit/ThreadLocalStorage.hxx | 24 ++++++++++++------------ 3 files changed, 17 insertions(+), 13 deletions(-) (limited to 'Kernel/KernelKit') diff --git a/Kernel/KernelKit/PE.hxx b/Kernel/KernelKit/PE.hxx index 0788cd2d..13b002d7 100644 --- a/Kernel/KernelKit/PE.hxx +++ b/Kernel/KernelKit/PE.hxx @@ -129,4 +129,9 @@ typedef struct ExecImageHeader { ExecOptionalHeader mOptHdr; } ExecImageHeader, *ExecImageHeaderPtr; +enum +{ + eUserSection = 0x00000020, +}; + #endif /* ifndef __KERNELKIT_INC_PE_HXX__ */ diff --git a/Kernel/KernelKit/ProcessHeap.hxx b/Kernel/KernelKit/ProcessHeap.hxx index 377e6009..c7522da5 100644 --- a/Kernel/KernelKit/ProcessHeap.hxx +++ b/Kernel/KernelKit/ProcessHeap.hxx @@ -17,7 +17,6 @@ /// @file ProcessHeap.hxx /// @brief Process heap allocator. -#define kUserHeapMaxSz (4096) #define kUserHeapMag (0xFAF0FEF0) namespace Kernel diff --git a/Kernel/KernelKit/ThreadLocalStorage.hxx b/Kernel/KernelKit/ThreadLocalStorage.hxx index 4a0d7528..9332a47b 100644 --- a/Kernel/KernelKit/ThreadLocalStorage.hxx +++ b/Kernel/KernelKit/ThreadLocalStorage.hxx @@ -17,21 +17,21 @@ #define kTLSCookieLen (3U) -/// @brief Thread Information Block for Local Storage. +struct THREAD_INFORMATION_BLOCK; + +/// @brief Thread Information Block. /// Located in GS on AMD64, other architectures have their own stuff. (64x0, 32x0, ARM64) -struct PACKED ThreadInformationBlock final +struct PACKED THREAD_INFORMATION_BLOCK final { - Kernel::Char Cookie[kTLSCookieLen]; // Process cookie. - Kernel::UIntPtr StartCode; // Start Address - Kernel::UIntPtr StartData; // Allocation Heap - Kernel::UIntPtr StartStack; // Stack Pointer. - Kernel::Int32 ThreadID; // Thread execution ID. + Kernel::Char f_Cookie[kTLSCookieLen]; // Process cookie. + Kernel::UIntPtr f_Code; // Start Address + Kernel::UIntPtr f_Data; // Allocation Heap + Kernel::UIntPtr f_BSS; // Stack Pointer. + Kernel::Int32 f_ID; // Thread execution ID. }; -typedef struct ThreadInformationBlock ProcessInformationBlock; - ///! @brief Cookie Sanity check. -Kernel::Boolean tls_check_tib(ThreadInformationBlock* Ptr); +Kernel::Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* the_tib); ///! @brief new ptr syscall. template @@ -45,10 +45,10 @@ template T* tls_new_class(Args&&... args); /// @brief TLS install TIB and PIB. (syscall) -EXTERN_C void rt_install_tib(ThreadInformationBlock* TIB, ThreadInformationBlock* PIB); +EXTERN_C void rt_install_tib(THREAD_INFORMATION_BLOCK* TIB, THREAD_INFORMATION_BLOCK* PIB); /// @brief TLS check (syscall) -EXTERN_C Kernel::Void tls_check_syscall_impl(Kernel::VoidPtr TIB) noexcept; +EXTERN_C Kernel::Bool tls_check_syscall_impl(Kernel::VoidPtr TIB) noexcept; #include -- cgit v1.2.3