summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--compile_flags.txt5
-rw-r--r--drivers/X11.drv/X11.drv.json3
-rw-r--r--frameworks/libThread.fwrk/dist/.keep (renamed from drivers/Threads.drv/dist/.keep)0
-rw-r--r--frameworks/libThread.fwrk/libThread.fwrk.json (renamed from drivers/Threads.drv/Threads.drv.json)7
-rw-r--r--frameworks/libThread.fwrk/src/ThreadManager.cpp37
5 files changed, 47 insertions, 5 deletions
diff --git a/compile_flags.txt b/compile_flags.txt
index 126163e..7e05658 100644
--- a/compile_flags.txt
+++ b/compile_flags.txt
@@ -3,9 +3,12 @@
-Isrc/boot/
-Isrc/build/src
-Isrc/kernel/src
+-Isrc/kernel/src/libDDK
+-Isrc/kernel/src/libSystem
-Isrc/kernel/public
-Isrc/kernel/public/frameworks
-Iframeworks
-Isrc/nectar/src
-I/opt/homebrew/Cellar/boost/1.90.0/include
--Iinclude/ \ No newline at end of file
+-Iinclude/
+-D__NEOSKRNL__ \ No newline at end of file
diff --git a/drivers/X11.drv/X11.drv.json b/drivers/X11.drv/X11.drv.json
index 0235752..ff9cf06 100644
--- a/drivers/X11.drv/X11.drv.json
+++ b/drivers/X11.drv/X11.drv.json
@@ -11,6 +11,9 @@
"-fno-exceptions",
"-Wl,--subsystem=17"
],
+ "ddk_depends_on": [
+ "GPUBasic"
+ ],
"cpp_macros": [
"kX11Version=0x0100",
"kX11VersionHighest=0x0100",
diff --git a/drivers/Threads.drv/dist/.keep b/frameworks/libThread.fwrk/dist/.keep
index e69de29..e69de29 100644
--- a/drivers/Threads.drv/dist/.keep
+++ b/frameworks/libThread.fwrk/dist/.keep
diff --git a/drivers/Threads.drv/Threads.drv.json b/frameworks/libThread.fwrk/libThread.fwrk.json
index f4177f5..1fd7e12 100644
--- a/drivers/Threads.drv/Threads.drv.json
+++ b/frameworks/libThread.fwrk/libThread.fwrk.json
@@ -2,8 +2,8 @@
"compiler_path": "x86_64-w64-mingw32-g++",
"compiler_std": "c++20",
"headers_path": ["../", "./", "../src/kernel/src/", "../src/kernel/src/kernel"],
- "sources_path": ["src/*.cc"],
- "output_name": "./dist/threads.ddk.out",
+ "sources_path": ["src/*.cpp"],
+ "output_name": "./dist/libThread.fwrk.dylib",
"compiler_flags": [
"-ffreestanding",
"-shared",
@@ -14,8 +14,7 @@
"cpp_macros": [
"kKTVersion=0x0100",
"kKTVersionHighest=0x0100",
- "kKTVersionLowest=0x0100",
- "__NE_AMD64__"
+ "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;
+}