From 90faf32f29b5482b52ab90f416528ed8f4e8f130 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Tue, 18 Jun 2024 13:04:01 +0200 Subject: MHR-31 IMP: Add TLS, a new/delete syscall. TODO: File I/O and network syscalls as well. Signed-off-by: Amlal EL Mahrouss --- Kernel/KernelKit/ThreadLocalStorage.hxx | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'Kernel/KernelKit') diff --git a/Kernel/KernelKit/ThreadLocalStorage.hxx b/Kernel/KernelKit/ThreadLocalStorage.hxx index 9d5473a2..75d29ced 100644 --- a/Kernel/KernelKit/ThreadLocalStorage.hxx +++ b/Kernel/KernelKit/ThreadLocalStorage.hxx @@ -15,16 +15,7 @@ #define kCookieMag1 'C' #define kCookieMag2 'R' -template -T* tls_new_ptr(void); - -template -bool tls_delete_ptr(T* ptr); - -template -T* tls_new_class(Args&&... args); - -#define kTLSCookieLen 3 +#define kTLSCookieLen (3U) /// @brief Thread Information Block for Local Storage. /// Located in GS on AMD64, other architectures have their own stuff. (64x0, 32x0, ARM64) @@ -39,13 +30,24 @@ struct PACKED ThreadInformationBlock final typedef struct ThreadInformationBlock ProcessInformationBlock; -/// @brief TLS install TIB and PIB. -EXTERN_C void rt_install_tib(ThreadInformationBlock* TIB, ThreadInformationBlock* PIB); - ///! @brief Cookie Sanity check. NewOS::Boolean tls_check_tib(ThreadInformationBlock* Ptr); -/// @brief TLS check system call +///! @brief new ptr syscall. +template +T* tls_new_ptr(void); + +///! @brief delete ptr syscall. +template +bool tls_delete_ptr(T* ptr); + +template +T* tls_new_class(Args&&... args); + +/// @brief TLS install TIB and PIB. (syscall) +EXTERN_C void rt_install_tib(ThreadInformationBlock* TIB, ThreadInformationBlock* PIB); + +/// @brief TLS check (syscall) EXTERN_C NewOS::Void tls_check_syscall_impl(NewOS::VoidPtr TIB) noexcept; #include -- cgit v1.2.3