diff options
| author | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-02 13:49:50 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-02 13:49:50 +0100 |
| commit | e559cf01834340d0a4dfcb45f7bdf081e8994032 (patch) | |
| tree | b7d1aa03111f83c0b7b058dca2786a6bd234a7e3 /Private/KernelKit | |
| parent | 05eca8d3061b60eac0a652a4b1e39269a9af79e8 (diff) | |
Kernel: Port toolchain to mingw (PE/COFF)
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Private/KernelKit')
| -rw-r--r-- | Private/KernelKit/PEFCodeManager.hxx | 2 | ||||
| -rw-r--r-- | Private/KernelKit/ProcessManager.hpp | 5 | ||||
| -rw-r--r-- | Private/KernelKit/ThreadLocalStorage.hxx | 27 | ||||
| -rw-r--r-- | Private/KernelKit/ThreadLocalStorage.inl | 45 |
4 files changed, 41 insertions, 38 deletions
diff --git a/Private/KernelKit/PEFCodeManager.hxx b/Private/KernelKit/PEFCodeManager.hxx index 3541d11b..775f299b 100644 --- a/Private/KernelKit/PEFCodeManager.hxx +++ b/Private/KernelKit/PEFCodeManager.hxx @@ -14,8 +14,6 @@ #include <NewKit/ErrorOr.hpp> #include <NewKit/String.hpp> -#include "NewKit/Defines.hpp" - namespace HCore { /// /// \name PEFLoader diff --git a/Private/KernelKit/ProcessManager.hpp b/Private/KernelKit/ProcessManager.hpp index 5637dd6f..14c6eb28 100644 --- a/Private/KernelKit/ProcessManager.hpp +++ b/Private/KernelKit/ProcessManager.hpp @@ -7,7 +7,8 @@ * ======================================================== */ -#pragma once +#ifndef __PROCESS_MANAGER__ +#define __PROCESS_MANAGER__ #include <ArchKit/Arch.hpp> #include <KernelKit/FileManager.hpp> @@ -211,3 +212,5 @@ const Int32 &rt_get_exit_code() noexcept; #include <KernelKit/ThreadLocalStorage.hxx> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#endif /* ifndef __PROCESS_MANAGER__ */ diff --git a/Private/KernelKit/ThreadLocalStorage.hxx b/Private/KernelKit/ThreadLocalStorage.hxx index 910daf31..5db78ca3 100644 --- a/Private/KernelKit/ThreadLocalStorage.hxx +++ b/Private/KernelKit/ThreadLocalStorage.hxx @@ -18,24 +18,27 @@ #define kCookieMag1 'C' #define kCookieMag2 'o' -template <typename T> T *hcore_tls_new_ptr(void); +template <typename T> +T *hcore_tls_new_ptr(void); -template <typename T> bool hcore_tls_delete_ptr(T *ptr); +template <typename T> +bool hcore_tls_delete_ptr(T *ptr); -template <typename T, typename... Args> T *hcore_tls_new_class(Args &&...args); +template <typename T, typename... Args> +T *hcore_tls_new_class(Args &&...args); typedef char rt_cookie_type[3]; /// @brief Thread Information Block for Local Storage. /// Located in GS on AMD64, Virtual Address 0x10000 (64x0, 32x0, ARM64) -struct ThreadInformationBlock final -{ - HCore::Char Name[255]; // Module Name - HCore::UIntPtr StartCode; // Start Address - HCore::UIntPtr StartData; // Allocation Heap - HCore::UIntPtr StartStack; // Stack Pointer. - HCore::Int32 Arch; // Architecture and/or platform. - rt_cookie_type Cookie; // Not shown in public header, this is the way we tell something went wrong. +struct ThreadInformationBlock final { + HCore::Char Name[255]; // Module Name + HCore::UIntPtr StartCode; // Start Address + HCore::UIntPtr StartData; // Allocation Heap + HCore::UIntPtr StartStack; // Stack Pointer. + HCore::Int32 Arch; // Architecture and/or platform. + rt_cookie_type Cookie; // Not shown in public header, this is the way we tell + // something went wrong. }; /// @brief TLS install TIB @@ -44,7 +47,7 @@ extern void rt_install_tib(ThreadInformationBlock *pTib); ///! @brief Cookie Sanity check. HCore::Boolean hcore_tls_check(ThreadInformationBlock *ptr); -#include "ThreadLocalStorage.inl" +#include <KernelKit/ThreadLocalStorage.inl> // last rev 1/29/24 diff --git a/Private/KernelKit/ThreadLocalStorage.inl b/Private/KernelKit/ThreadLocalStorage.inl index e73d8672..59d4c525 100644 --- a/Private/KernelKit/ThreadLocalStorage.inl +++ b/Private/KernelKit/ThreadLocalStorage.inl @@ -9,42 +9,41 @@ //! @brief Allocates a pointer from the process's tls. +#ifndef __PROCESS_MANAGER__ +#include <KernelKit/ProcessManager.hpp> +#endif + template <typename T> -inline T* hcore_tls_new_ptr(void) -{ - using namespace HCore; +inline T* hcore_tls_new_ptr(void) { + using namespace HCore; - auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); + auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); - T* pointer = (T*)ref_process.Leak().New(sizeof(T)); - return pointer; + T* pointer = (T*)ref_process.Leak().New(sizeof(T)); + return pointer; } //! @brief TLS delete implementation. template <typename T> -inline bool hcore_tls_delete_ptr(T* ptr) -{ - if (!ptr) - return false; +inline bool hcore_tls_delete_ptr(T* ptr) { + if (!ptr) return false; - using namespace HCore; + using namespace HCore; - auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); - ptr->~T(); + auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); + ptr->~T(); - return ref_process.Leak().Delete(ptr, sizeof(T)); + return ref_process.Leak().Delete(ptr, sizeof(T)); } template <typename T, typename... Args> -T* hcore_tls_new_class(Args&&... args) -{ - T* ptr = hcore_tls_new_ptr<T>(); +T* hcore_tls_new_class(Args&&... args) { + T* ptr = hcore_tls_new_ptr<T>(); - if (ptr) - { - *ptr = T(HCore::forward(args)...); - return ptr; - } + if (ptr) { + *ptr = T(HCore::forward(args)...); + return ptr; + } - return nullptr; + return nullptr; } |
