summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kernel/src/UserMgr.cpp7
-rw-r--r--src/kernel/src/UserProcessScheduler.cpp1
-rw-r--r--src/launch/.launch_manifest4
-rw-r--r--src/launch/src/CRuntimeZero.S18
-rw-r--r--src/launch/src/RuntimeMain.cpp4
-rw-r--r--src/libPThread/.keep0
-rw-r--r--src/libPThread/PThreadKit/.keep0
-rw-r--r--src/libPThread/PThreadKit/Thread.h14
-rw-r--r--src/libPThread/libPThread.json22
-rw-r--r--src/libPThread/src/.keep0
-rw-r--r--src/libPThread/src/Thread.cpp33
-rw-r--r--src/libSystem/SystemKit/System.h1
12 files changed, 96 insertions, 8 deletions
diff --git a/src/kernel/src/UserMgr.cpp b/src/kernel/src/UserMgr.cpp
index 264dcc5f..cceda53d 100644
--- a/src/kernel/src/UserMgr.cpp
+++ b/src/kernel/src/UserMgr.cpp
@@ -16,7 +16,8 @@
/// @brief Multi-user support.
namespace Kernel {
-
-
-
+ namespace Detail {
+ struct UserPermissionControl;
+ struct UserPermissionElevator;
+ }
}
diff --git a/src/kernel/src/UserProcessScheduler.cpp b/src/kernel/src/UserProcessScheduler.cpp
index c0b166cb..e7fe7398 100644
--- a/src/kernel/src/UserProcessScheduler.cpp
+++ b/src/kernel/src/UserProcessScheduler.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <ArchKit/ArchKit.h>
#include <KernelKit/HardwareThreadScheduler.h>
#include <KernelKit/HeapMgr.h>
diff --git a/src/launch/.launch_manifest b/src/launch/.launch_manifest
new file mode 100644
index 00000000..201b1f61
--- /dev/null
+++ b/src/launch/.launch_manifest
@@ -0,0 +1,4 @@
+[Launch]
+RunAsRoot=YES
+# NOTE: This has to be generated and passed here to enable all-trustee permissions.
+RootKey=
diff --git a/src/launch/src/CRuntimeZero.S b/src/launch/src/CRuntimeZero.S
index 7dd283c9..1e5e2cbb 100644
--- a/src/launch/src/CRuntimeZero.S
+++ b/src/launch/src/CRuntimeZero.S
@@ -20,7 +20,21 @@ _NeMain:
callq launch_startup_fn
movq %rcx, 0
-
callq ThrExitMainThread
-
popq %rbp
+
+.data
+.global _ProgramData
+_ProgramData:
+ //;; ident
+ .word 0xffeecc
+ //;; version
+ .word 0x0110
+ //;; kind: 0x0 = LaunchSystem
+ .word 0x0
+ //;; flags
+ .word 0x0
+ //;; Launcher name
+ .asciz "NeKernel Launcher"
+
+
diff --git a/src/launch/src/RuntimeMain.cpp b/src/launch/src/RuntimeMain.cpp
index 3216dad0..833a2f55 100644
--- a/src/launch/src/RuntimeMain.cpp
+++ b/src/launch/src/RuntimeMain.cpp
@@ -12,13 +12,13 @@
IMPORT_C SInt32 launch_startup_fn(Void) {
/// Start LaunchHelpers.fwrk services, and make the launcher manageable too (via mgmt.launch)
UInt32* ret =
- static_cast<UInt32*>(libsys_syscall_arg_1(libsys_hash_64("__launch_register_service")));
+ static_cast<UInt32*>(libsys_syscall_arg_1(libsys_hash_64("__launch_register_service"))); // Register service based on program data.
if (ret) {
switch (*ret) {
case kErrorSuccess: {
ret =
- static_cast<UInt32*>(libsys_syscall_arg_1(libsys_hash_64("__launch_listen_as_super")));
+ static_cast<UInt32*>(libsys_syscall_arg_1(libsys_hash_64("__launch_attach_service"))); // Attach this program as the service process.
return *ret;
}
default:
diff --git a/src/libPThread/.keep b/src/libPThread/.keep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/libPThread/.keep
diff --git a/src/libPThread/PThreadKit/.keep b/src/libPThread/PThreadKit/.keep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/libPThread/PThreadKit/.keep
diff --git a/src/libPThread/PThreadKit/Thread.h b/src/libPThread/PThreadKit/Thread.h
new file mode 100644
index 00000000..053885e7
--- /dev/null
+++ b/src/libPThread/PThreadKit/Thread.h
@@ -0,0 +1,14 @@
+// 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/nekernel
+
+#ifndef LIBPOSIX_POSIXKIT_THREAD_H
+#define LIBPOSIX_POSIXKIT_THREAD_H
+
+#include <libPOSIXWrapper/POSIXKit/unistd.h>
+
+#define PTHREAD_UNSAFE /* hint */
+#define PTHREAD_SAFE /* hint */
+
+#endif // LIBPOSIX_POSIXKIT_THREAD_H
diff --git a/src/libPThread/libPThread.json b/src/libPThread/libPThread.json
new file mode 100644
index 00000000..a5cfba73
--- /dev/null
+++ b/src/libPThread/libPThread.json
@@ -0,0 +1,22 @@
+{
+ "compiler_path": "x86_64-w64-mingw32-gcc",
+ "compiler_std": "c++20",
+ "headers_path": ["../", "./"],
+ "sources_path": ["src/*.cpp"],
+ "output_name": "libPThread.dll",
+ "compiler_flags": [
+ "-ffreestanding",
+ "-shared",
+ "-std=c++20",
+ "-fno-rtti",
+ "-fno-exceptions",
+ "-Wl,--subsystem=17"
+ ],
+ "cpp_macros": [
+ "__NEOSKRNL__",
+ "kPosixVersionHighest=0x0100",
+ "kPosixVersionLowest=0x0100",
+ "kPosixVersion=0x0100"
+ ],
+ "description": "The NeKernel PThread System. Refer to: https://man7.org/linux/man-pages/man7/pthreads.7.html"
+}
diff --git a/src/libPThread/src/.keep b/src/libPThread/src/.keep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/libPThread/src/.keep
diff --git a/src/libPThread/src/Thread.cpp b/src/libPThread/src/Thread.cpp
new file mode 100644
index 00000000..34a610cd
--- /dev/null
+++ b/src/libPThread/src/Thread.cpp
@@ -0,0 +1,33 @@
+// 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/nekernel
+
+#include <libPThread/PThreadKit/Thread.h>
+
+namespace POSIXKit::Detail {
+
+ /// @brief Max path structure.
+ constexpr auto kMaxPathLen = 255;
+ static constexpr auto kCanaryValue = 0xf0f0488f;
+
+ /// @brief Thread Information Structure.
+ struct ThreadFrameParams final {
+ SInt64 fCanary;
+ VoidPtr fStackPtr;
+ VoidPtr fCodePtr;
+ SizeT fCodeSz;
+ SizeT fStackSz;
+ SInt64 fThrdID;
+ SInt64 fUsrID, fGrpID;
+ SInt64* fFD{};
+ SizeT fFDCnt;
+ Char fCWD[kMaxPathLen];
+ Char fRoot[kMaxPathLen];
+ ThreadRef fRef;
+ };
+
+} // namespace POSIX::Detail
+
+
+
diff --git a/src/libSystem/SystemKit/System.h b/src/libSystem/SystemKit/System.h
index 1a7298d8..4e766d9d 100644
--- a/src/libSystem/SystemKit/System.h
+++ b/src/libSystem/SystemKit/System.h
@@ -14,6 +14,7 @@
/// @brief Secure TTY device path.
#define kSecurePrintDevicePath "/devices/stty{}{}"
+/// @brief Laser-disc path (Blu-ray, DVD, CD, etc.)
#define kCDDevicePath "/devices/dvd{}{}"
// ------------------------------------------------------------------------------------------ //