diff options
| author | amlel <113760121+amlel-png@users.noreply.github.com> | 2024-01-09 21:49:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-09 21:49:17 +0100 |
| commit | 149ad21b7188d21d726215c98d0d74835ea4e737 (patch) | |
| tree | 673b3db2a203630aa097bbf77b1c8cd5487318bc | |
| parent | a8cf25e6b66425d89b25381bb07fd4074cdc8deb (diff) | |
| parent | e761991ab5a1d51392d098a15c1870025900fcd1 (diff) | |
Merge pull request #1 from Mahrouss-Logic/kernel-tls
Kernel tls
| -rw-r--r-- | HALKit/64x0/.hgkeep (renamed from HALKit/ARC/.hgkeep) | 0 | ||||
| l--------- | HALKit/NewCPU | 1 | ||||
| -rw-r--r-- | KernelKit/ThreadLocalStorage.hxx | 4 | ||||
| -rw-r--r-- | KernelKit/ThreadLocalStorage.inl | 48 | ||||
| -rw-r--r-- | Source/SMPManager.cxx | 5 | ||||
| -rw-r--r-- | Source/ThreadLocalStorage.cxx | 6 | ||||
| -rw-r--r-- | StorageKit/Storage.hpp | 2 |
7 files changed, 32 insertions, 34 deletions
diff --git a/HALKit/ARC/.hgkeep b/HALKit/64x0/.hgkeep index e69de29b..e69de29b 100644 --- a/HALKit/ARC/.hgkeep +++ b/HALKit/64x0/.hgkeep diff --git a/HALKit/NewCPU b/HALKit/NewCPU deleted file mode 120000 index 22f9ce8e..00000000 --- a/HALKit/NewCPU +++ /dev/null @@ -1 +0,0 @@ -ARC
\ No newline at end of file diff --git a/KernelKit/ThreadLocalStorage.hxx b/KernelKit/ThreadLocalStorage.hxx index c5030972..8d84befb 100644 --- a/KernelKit/ThreadLocalStorage.hxx +++ b/KernelKit/ThreadLocalStorage.hxx @@ -14,9 +14,9 @@ //! @brief TLS implementation in C++ -#define kRTLMag0 'V' +#define kRTLMag0 'h' #define kRTLMag1 'C' -#define kRTLMag2 'S' +#define kRTLMag2 'o' template <typename T> T* hcore_tls_new_ptr(void); diff --git a/KernelKit/ThreadLocalStorage.inl b/KernelKit/ThreadLocalStorage.inl index c117dd4e..bf036366 100644 --- a/KernelKit/ThreadLocalStorage.inl +++ b/KernelKit/ThreadLocalStorage.inl @@ -12,39 +12,39 @@ template <typename T> inline T* hcore_tls_new_ptr(void) { - using namespace hCore; - - auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); - - T* pointer = (T*)ref_process.Leak().New(sizeof(T)); - return pointer; + using namespace hCore; + + auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); + + 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; - - using namespace hCore; - - auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); - ptr->~T(); - - return ref_process.Leak().Delete(ptr, sizeof(T)); + if (!ptr) + return false; + + using namespace hCore; + + auto ref_process = ProcessManager::Shared().Leak().GetCurrent(); + ptr->~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>(); - - if (ptr) - { - *ptr = T(hCore::forward(args)...); - return ptr; - } - - return nullptr; + T* ptr = hcore_tls_new_ptr<T>(); + + if (ptr) + { + *ptr = T(hCore::forward(args)...); + return ptr; + } + + return nullptr; } diff --git a/Source/SMPManager.cxx b/Source/SMPManager.cxx index 25dbc0cf..d2adf0cb 100644 --- a/Source/SMPManager.cxx +++ b/Source/SMPManager.cxx @@ -12,6 +12,7 @@ #include <ArchKit/Arch.hpp> //! This file handles multi processing in hCore. +//! Multi processing is needed for File I/O, networking and scheduling. namespace hCore { @@ -77,10 +78,10 @@ namespace hCore //! @brief Constructor and destructor - ///! @brief Default constructor. + ///! @brief Default constructor. SMPManager::SMPManager() = default; - ///! @brief Default destructor. + ///! @brief Default destructor. SMPManager::~SMPManager() = default; Ref<SMPManager> SMPManager::Shared() diff --git a/Source/ThreadLocalStorage.cxx b/Source/ThreadLocalStorage.cxx index 36f59df5..ebd41064 100644 --- a/Source/ThreadLocalStorage.cxx +++ b/Source/ThreadLocalStorage.cxx @@ -10,8 +10,6 @@ #include <KernelKit/ProcessManager.hpp> #include <KernelKit/ThreadLocalStorage.hxx> -#include <KernelKit/SharedObjectCore.hxx> - using namespace hCore; Boolean hcore_tls_check(VoidPtr ptr) @@ -23,11 +21,11 @@ Boolean hcore_tls_check(VoidPtr ptr) return _ptr[0] == kRTLMag0 && _ptr[1] == kRTLMag1 && _ptr[2] == kRTLMag2; } -void hcore_tls_check_syscall_impl(VoidPtr ptr) noexcept +Void hcore_tls_check_syscall_impl(VoidPtr ptr) noexcept { if (!hcore_tls_check(ptr)) { - kcout << "TLS: Thread check failure, crashing...\n"; + kcout << "TLS: TLS check failure, crashing...\n"; ProcessManager::Shared().Leak().GetCurrent().Leak().Crash(); } } diff --git a/StorageKit/Storage.hpp b/StorageKit/Storage.hpp index 420e67fd..a2003bef 100644 --- a/StorageKit/Storage.hpp +++ b/StorageKit/Storage.hpp @@ -21,7 +21,7 @@ typedef hCore::UInt16 OSScsiPacket[12]; extern const OSScsiPacket kCDRomPacketTemplate; #define f_kDriveSectorSize 2048 -#define f_kDriveSize(last_lba) (last_lba + 1) * f_kDriveSectorSize +#define f_kDriveSize(last_lba) ((last_lba + 1) * f_kDriveSectorSize) |
