summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-09 21:28:33 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-09 21:28:33 +0100
commit15d5949e85216a14715e64ed5116e999d6869558 (patch)
treee72c9df0fafe07d41c21764f47a9bba7952f1686
parenta8cf25e6b66425d89b25381bb07fd4074cdc8deb (diff)
kernel/tls: Improvements on the kernel side.
hal: remove NewCPU and add 64x0, for it's future support. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
-rw-r--r--HALKit/64x0/.hgkeep (renamed from HALKit/ARC/.hgkeep)0
l---------HALKit/NewCPU1
-rw-r--r--KernelKit/ThreadLocalStorage.hxx4
-rw-r--r--KernelKit/ThreadLocalStorage.inl48
-rw-r--r--Source/ThreadLocalStorage.cxx6
-rw-r--r--StorageKit/Storage.hpp2
6 files changed, 29 insertions, 32 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/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)