diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-20 12:34:54 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-20 12:34:54 +0100 |
| commit | 4cc8124f0715a5d336071be06a4efd574471e691 (patch) | |
| tree | 9b6dfd6681fa71aa5212ef4dde073ef5b64d9bf3 | |
| parent | 49a9467b532ff5d69fa187500391db480d406d66 (diff) | |
[CHORE] Working on libThread for NeKernel's thread implementation.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
| -rw-r--r-- | compile_flags.txt | 5 | ||||
| -rw-r--r-- | drivers/X11.drv/X11.drv.json | 3 | ||||
| -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.cpp | 37 |
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; +} |
