From 04388217a8d008df0bb6ab3bf79b443e583b62d9 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 20 Mar 2026 18:08:08 +0100 Subject: [FEAT] Rename ThreadManager to ThreadMgr.cpp. Signed-off-by: Amlal El Mahrouss --- frameworks/libThread.fwrk/src/ThreadManager.cpp | 61 ------------------------- frameworks/libThread.fwrk/src/ThreadMgr.cpp | 61 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 61 deletions(-) delete mode 100644 frameworks/libThread.fwrk/src/ThreadManager.cpp create mode 100644 frameworks/libThread.fwrk/src/ThreadMgr.cpp (limited to 'frameworks') diff --git a/frameworks/libThread.fwrk/src/ThreadManager.cpp b/frameworks/libThread.fwrk/src/ThreadManager.cpp deleted file mode 100644 index f01bbfe..0000000 --- a/frameworks/libThread.fwrk/src/ThreadManager.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org) -// Licensed under the Apache License, Version 2.0 (see LICENSE file) -// Official repository: https://github.com/ne-foss-org/ne_system - -#include - -#define kThreadMapMax (1024UL) -#define kThreadBaseHash (0x5555ffff6ULL) - -/// @brief The registered thread for a specific process. -static ThreadRef kThreadMap[kThreadMapMax]; - -/// @brief Exit codes as we want to track them. -static SInt32 kThreadExitCodes[kThreadMapMax]; - -/// @brief This hash-list stores the thread to be run. -static ThreadRef kThreadHeads[kThreadMapMax]; - -static ThreadRef kCurrentThread; - -static __THREAD_UNSAFE Void _ThrRunThread(SInt32 argument_count, VoidPtr args, - ThrProcKind procedure, ThreadRef ref) { - static SemaphoreRef sem_ref = SemCreate(0, 1000, "ThreadSem"); - - if (sem_ref) return; - - auto ret = procedure(argument_count, (Char**) args); - kThreadExitCodes[kThreadMapMax % ref->__hash] = ret; - - if (ref == kCurrentThread) kCurrentThread = nullptr; - - SemClose(sem_ref); - sem_ref = nullptr; -} - -IMPORT_C ThreadRef ThrCreateThread(const Char* thread_name, ThrProcKind procedure, - SInt32 argument_count, VoidPtr args, SInt32 flags) { - ThreadRef ref = new REF_TYPE; - if (!ref) return nullptr; - - if (!thread_name || !procedure) { - delete ref; - ref = nullptr; - return nullptr; - } - - ref->__hash = *(UInt32*) thread_name; - ref->__hash += kThreadBaseHash; // pad hash with a seed. - - ref->__self = (VoidPtr) procedure; - - kThreadMap[kThreadMapMax % ref->__hash] = ref; - kThreadHeads[kThreadMapMax % ref->__hash] = ref; - - kCurrentThread = ref; - - _ThrRunThread(argument_count, args, procedure, ref); - - return ref; -} diff --git a/frameworks/libThread.fwrk/src/ThreadMgr.cpp b/frameworks/libThread.fwrk/src/ThreadMgr.cpp new file mode 100644 index 0000000..f01bbfe --- /dev/null +++ b/frameworks/libThread.fwrk/src/ThreadMgr.cpp @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org) +// Licensed under the Apache License, Version 2.0 (see LICENSE file) +// Official repository: https://github.com/ne-foss-org/ne_system + +#include + +#define kThreadMapMax (1024UL) +#define kThreadBaseHash (0x5555ffff6ULL) + +/// @brief The registered thread for a specific process. +static ThreadRef kThreadMap[kThreadMapMax]; + +/// @brief Exit codes as we want to track them. +static SInt32 kThreadExitCodes[kThreadMapMax]; + +/// @brief This hash-list stores the thread to be run. +static ThreadRef kThreadHeads[kThreadMapMax]; + +static ThreadRef kCurrentThread; + +static __THREAD_UNSAFE Void _ThrRunThread(SInt32 argument_count, VoidPtr args, + ThrProcKind procedure, ThreadRef ref) { + static SemaphoreRef sem_ref = SemCreate(0, 1000, "ThreadSem"); + + if (sem_ref) return; + + auto ret = procedure(argument_count, (Char**) args); + kThreadExitCodes[kThreadMapMax % ref->__hash] = ret; + + if (ref == kCurrentThread) kCurrentThread = nullptr; + + SemClose(sem_ref); + sem_ref = nullptr; +} + +IMPORT_C ThreadRef ThrCreateThread(const Char* thread_name, ThrProcKind procedure, + SInt32 argument_count, VoidPtr args, SInt32 flags) { + ThreadRef ref = new REF_TYPE; + if (!ref) return nullptr; + + if (!thread_name || !procedure) { + delete ref; + ref = nullptr; + return nullptr; + } + + ref->__hash = *(UInt32*) thread_name; + ref->__hash += kThreadBaseHash; // pad hash with a seed. + + ref->__self = (VoidPtr) procedure; + + kThreadMap[kThreadMapMax % ref->__hash] = ref; + kThreadHeads[kThreadMapMax % ref->__hash] = ref; + + kCurrentThread = ref; + + _ThrRunThread(argument_count, args, procedure, ref); + + return ref; +} -- cgit v1.2.3