diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-22 08:29:22 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-22 08:29:22 +0100 |
| commit | f19ebc65a5df6268d37f5503e9bec71825f7e3aa (patch) | |
| tree | 4d8156cbb6be5b24655105784e3b0961ef8d27f6 /dev/ZKAKit/KernelKit/ThreadLocalStorage.inl | |
| parent | 47a0e9b901e9e51b3f0ee5dd30d52ff1a5c8fcc0 (diff) | |
META: Switch copyright notice to 'EL Mahrouss Logic'
Diffstat (limited to 'dev/ZKAKit/KernelKit/ThreadLocalStorage.inl')
| -rw-r--r-- | dev/ZKAKit/KernelKit/ThreadLocalStorage.inl | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/dev/ZKAKit/KernelKit/ThreadLocalStorage.inl b/dev/ZKAKit/KernelKit/ThreadLocalStorage.inl index 67900c72..23451ab4 100644 --- a/dev/ZKAKit/KernelKit/ThreadLocalStorage.inl +++ b/dev/ZKAKit/KernelKit/ThreadLocalStorage.inl @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024, EL Mahrouss Logic, all rights reserved. ------------------------------------------- */ @@ -27,37 +27,38 @@ inline T* tls_new_ptr(void) noexcept return reinterpret_cast<T*>(pointer.Leak().Leak()); } -//! @brief TLS delete implementation. +//! @brief Delete process pointer. +//! @param obj The pointer to delete. template <typename T> -inline Kernel::Bool tls_delete_ptr(T* ptr) noexcept +inline Kernel::Bool tls_delete_ptr(T* obj) noexcept { - if (!ptr) - return No; - using namespace Kernel; + if (!obj) + return No; + auto ref_process = UserProcessScheduler::The().GetCurrentProcess(); MUST_PASS(ref_process); - return ref_process.Leak().Delete(ptr, sizeof(T)); + return ref_process.Leak().Delete(obj, sizeof(T)); } /// @brief Allocate a C++ class, and then call the constructor of it. /// @tparam T class type. /// @tparam ...Args varg class type. -/// @param ...args arguments list. +/// @param args arguments list. /// @return Class instance. template <typename T, typename... Args> T* tls_new_class(Args&&... args) { - T* ptr = tls_new_ptr<T>(); - using namespace Kernel; - if (ptr) + T* obj = tls_new_ptr<T>(); + + if (obj) { - *ptr = T(forward(args)...); - return ptr; + *obj = T(forward(args)...); + return obj; } return nullptr; @@ -65,14 +66,16 @@ T* tls_new_class(Args&&... args) /// @brief Delete a C++ class (call constructor first.) /// @tparam T -/// @param ptr +/// @param obj /// @return template <typename T> -inline Kernel::Bool tls_delete_class(T* ptr) +inline Kernel::Bool tls_delete_class(T* obj) { - if (!ptr) - return false; + using namespace Kernel; + + if (!obj) + return No; - ptr->~T(); - return tls_delete_ptr(ptr); + obj->~T(); + return tls_delete_ptr(obj); } |
