summaryrefslogtreecommitdiffhomepage
path: root/frameworks
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-03-20 12:34:54 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-03-20 12:34:54 +0100
commit4cc8124f0715a5d336071be06a4efd574471e691 (patch)
tree9b6dfd6681fa71aa5212ef4dde073ef5b64d9bf3 /frameworks
parent49a9467b532ff5d69fa187500391db480d406d66 (diff)
[CHORE] Working on libThread for NeKernel's thread implementation.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'frameworks')
-rw-r--r--frameworks/libThread.fwrk/dist/.keep0
-rw-r--r--frameworks/libThread.fwrk/libThread.fwrk.json20
-rw-r--r--frameworks/libThread.fwrk/src/ThreadManager.cpp37
3 files changed, 57 insertions, 0 deletions
diff --git a/frameworks/libThread.fwrk/dist/.keep b/frameworks/libThread.fwrk/dist/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/libThread.fwrk/dist/.keep
diff --git a/frameworks/libThread.fwrk/libThread.fwrk.json b/frameworks/libThread.fwrk/libThread.fwrk.json
new file mode 100644
index 0000000..1fd7e12
--- /dev/null
+++ b/frameworks/libThread.fwrk/libThread.fwrk.json
@@ -0,0 +1,20 @@
+{
+ "compiler_path": "x86_64-w64-mingw32-g++",
+ "compiler_std": "c++20",
+ "headers_path": ["../", "./", "../src/kernel/src/", "../src/kernel/src/kernel"],
+ "sources_path": ["src/*.cpp"],
+ "output_name": "./dist/libThread.fwrk.dylib",
+ "compiler_flags": [
+ "-ffreestanding",
+ "-shared",
+ "-fno-rtti",
+ "-fno-exceptions",
+ "-Wl,--subsystem=17"
+ ],
+ "cpp_macros": [
+ "kKTVersion=0x0100",
+ "kKTVersionHighest=0x0100",
+ "kKTVersionLowest=0x0100"
+ ]
+ }
+
diff --git a/frameworks/libThread.fwrk/src/ThreadManager.cpp b/frameworks/libThread.fwrk/src/ThreadManager.cpp
new file mode 100644
index 0000000..9b222ab
--- /dev/null
+++ b/frameworks/libThread.fwrk/src/ThreadManager.cpp
@@ -0,0 +1,37 @@
+// 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 <libSystem/SystemKit/System.h>
+
+#define kThreadMapMax (1024UL)
+#define kThreadBaseHash (0x5555ffff6ULL)
+
+/// @brief The registered thread for a specific process.
+static ThreadRef kThreadMap[kThreadMapMax];
+
+/// @brief This hash-list stores the thread to be run.
+static ThreadRef kThreadHeads[kThreadMapMax];
+
+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;
+
+ ref->__self = (VoidPtr) procedure;
+
+ kThreadMap[kThreadMapMax % ref->__hash] = ref;
+ kThreadHeads[kThreadMapMax % ref->__hash] = ref;
+
+ return ref;
+}