summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--compile_flags.txt5
-rw-r--r--dev/ddk/DDKKit/ddk.h (renamed from dev/ddk/ddk.h)0
-rw-r--r--dev/ddk/DDKKit/dev.h (renamed from dev/ddk/dev.h)2
-rw-r--r--dev/ddk/DDKKit/io.h (renamed from dev/ddk/io.h)2
-rw-r--r--dev/ddk/DDKKit/str.h (renamed from dev/ddk/str.h)2
-rw-r--r--dev/ddk/obj/.gitkeep0
-rw-r--r--dev/ddk/src/ddk_alloc.c2
-rw-r--r--dev/ddk/src/ddk_dev.c4
-rw-r--r--dev/ddk/src/ddk_io.c2
-rw-r--r--dev/ddk/src/ddk_kernel_call.c2
-rw-r--r--dev/ddk/src/ddk_rt_cxx.cc2
-rw-r--r--dev/ddk/src/ddk_str.c2
-rw-r--r--dev/ddk/src/ddk_ver.c2
-rw-r--r--dev/kernel/ArchKit/ArchKit.h6
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc4
-rw-r--r--dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelMain.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc20
-rw-r--r--dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/HalKernelMain.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/HalSchedulerCoreARM64.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/HalSchedulerCorePrimitivesARM64.cc2
-rw-r--r--dev/kernel/KernelKit/CodeMgr.h8
-rw-r--r--dev/kernel/KernelKit/DriveMgr.h2
-rw-r--r--dev/kernel/KernelKit/IDylibObject.h2
-rw-r--r--dev/kernel/KernelKit/IPEFDylibObject.h2
-rw-r--r--dev/kernel/KernelKit/KPC.h72
-rw-r--r--dev/kernel/KernelKit/PECodeMgr.h2
-rw-r--r--dev/kernel/KernelKit/PEFCodeMgr.h6
-rw-r--r--dev/kernel/KernelKit/ProcessScheduler.h (renamed from dev/kernel/KernelKit/UserProcessScheduler.h)2
-rw-r--r--dev/kernel/KernelKit/ProcessScheduler.inl (renamed from dev/kernel/KernelKit/UserProcessScheduler.inl)4
-rw-r--r--dev/kernel/KernelKit/ThreadLocalStorage.inl2
-rw-r--r--dev/kernel/KernelKit/XCOFF.h28
-rw-r--r--dev/kernel/src/BinaryMutex.cc2
-rw-r--r--dev/kernel/src/CodeMgr.cc4
-rw-r--r--dev/kernel/src/FS/HeFS.cc2
-rw-r--r--dev/kernel/src/FS/NeFS.cc2
-rw-r--r--dev/kernel/src/HardwareThreadScheduler.cc2
-rw-r--r--dev/kernel/src/IDylibObject.cc2
-rw-r--r--dev/kernel/src/IPEFDylibObject.cc2
-rw-r--r--dev/kernel/src/Network/IPCAddr.cc2
-rw-r--r--dev/kernel/src/Network/IPCMsg.cc2
-rw-r--r--dev/kernel/src/PEFCodeMgr.cc4
-rw-r--r--dev/kernel/src/ProcessScheduler.cc (renamed from dev/kernel/src/UserProcessScheduler.cc)2
-rw-r--r--dev/kernel/src/ProcessTeam.cc (renamed from dev/kernel/src/UserProcessTeam.cc)2
-rw-r--r--dev/kernel/src/ThreadLocalStorage.cc2
-rw-r--r--dev/user/SystemCalls.h8
-rw-r--r--docs/drawio/SOFT_SCHED_DESIGN.drawio2
49 files changed, 129 insertions, 112 deletions
diff --git a/compile_flags.txt b/compile_flags.txt
index be580689..00e05bb9 100644
--- a/compile_flags.txt
+++ b/compile_flags.txt
@@ -1,12 +1,13 @@
-Idev/kernel
-Idev/
-Idev/user
--Idev/boot/
+-Idev/boot
+-Idev/ddk
-Ipublic/tools
-Ipublic/tools/make_app
-Ipublic/tools/make_fs
-Ipublic/tools/open
--Ipublic/frameworks/
+-Ipublic/frameworks
-Idev/boot/BootKit
-std=c++20
-D__NE_AMD64__
diff --git a/dev/ddk/ddk.h b/dev/ddk/DDKKit/ddk.h
index f6f8d48e..f6f8d48e 100644
--- a/dev/ddk/ddk.h
+++ b/dev/ddk/DDKKit/ddk.h
diff --git a/dev/ddk/dev.h b/dev/ddk/DDKKit/dev.h
index 98979e52..929aafa4 100644
--- a/dev/ddk/dev.h
+++ b/dev/ddk/DDKKit/dev.h
@@ -9,7 +9,7 @@
#pragma once
-#include <ddk/ddk.h>
+#include <DDKKit/ddk.h>
struct _DDK_DEVICE;
diff --git a/dev/ddk/io.h b/dev/ddk/DDKKit/io.h
index cfd6d2d2..a5ab93f1 100644
--- a/dev/ddk/io.h
+++ b/dev/ddk/DDKKit/io.h
@@ -8,7 +8,7 @@
#pragma once
-#include <ddk/str.h>
+#include <DDKKit/str.h>
/// @brief print character into UART.
DDK_EXTERN void kputc(const char ch);
diff --git a/dev/ddk/str.h b/dev/ddk/DDKKit/str.h
index e1e206a8..49aeb45f 100644
--- a/dev/ddk/str.h
+++ b/dev/ddk/DDKKit/str.h
@@ -8,7 +8,7 @@
#pragma once
-#include <ddk/ddk.h>
+#include <DDKKit/ddk.h>
/// @brief DDK equivalent of POSIX's string.h
/// @file str.h
diff --git a/dev/ddk/obj/.gitkeep b/dev/ddk/obj/.gitkeep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/dev/ddk/obj/.gitkeep
diff --git a/dev/ddk/src/ddk_alloc.c b/dev/ddk/src/ddk_alloc.c
index 9d0ac0db..e0bd8ad2 100644
--- a/dev/ddk/src/ddk_alloc.c
+++ b/dev/ddk/src/ddk_alloc.c
@@ -6,7 +6,7 @@
------------------------------------------- */
-#include <ddk/ddk.h>
+#include <DDKKit/ddk.h>
/**
\brief Allocates a new heap on the Kernel's side.
diff --git a/dev/ddk/src/ddk_dev.c b/dev/ddk/src/ddk_dev.c
index 7514bf84..b4bbeae7 100644
--- a/dev/ddk/src/ddk_dev.c
+++ b/dev/ddk/src/ddk_dev.c
@@ -6,8 +6,8 @@
------------------------------------------- */
-#include <ddk/dev.h>
-#include <ddk/str.h>
+#include <DDKKit/dev.h>
+#include <DDKKit/str.h>
/// @brief Open a new binary device from path.
DDK_EXTERN DDK_DEVICE_PTR open(const char* devicePath)
diff --git a/dev/ddk/src/ddk_io.c b/dev/ddk/src/ddk_io.c
index 0e10a0ad..5405a0e3 100644
--- a/dev/ddk/src/ddk_io.c
+++ b/dev/ddk/src/ddk_io.c
@@ -6,7 +6,7 @@
------------------------------------------- */
-#include <ddk/io.h>
+#include <DDKKit/io.h>
DDK_EXTERN void kputc(const char ch)
{
diff --git a/dev/ddk/src/ddk_kernel_call.c b/dev/ddk/src/ddk_kernel_call.c
index 71dbebeb..5c3c051a 100644
--- a/dev/ddk/src/ddk_kernel_call.c
+++ b/dev/ddk/src/ddk_kernel_call.c
@@ -6,7 +6,7 @@
------------------------------------------- */
-#include <ddk/ddk.h>
+#include <DDKKit/ddk.h>
#include <stdarg.h>
/// @brief this is an internal call, do not use it.
diff --git a/dev/ddk/src/ddk_rt_cxx.cc b/dev/ddk/src/ddk_rt_cxx.cc
index 1ac66457..f3c332dc 100644
--- a/dev/ddk/src/ddk_rt_cxx.cc
+++ b/dev/ddk/src/ddk_rt_cxx.cc
@@ -6,7 +6,7 @@
------------------------------------------- */
-#include <ddk/ddk.h>
+#include <DDKKit/ddk.h>
void* operator new(size_t sz)
{
diff --git a/dev/ddk/src/ddk_str.c b/dev/ddk/src/ddk_str.c
index 1558e636..a2918815 100644
--- a/dev/ddk/src/ddk_str.c
+++ b/dev/ddk/src/ddk_str.c
@@ -6,7 +6,7 @@
------------------------------------------- */
-#include <ddk/str.h>
+#include <DDKKit/str.h>
DDK_EXTERN size_t kstrlen(const char* in)
{
diff --git a/dev/ddk/src/ddk_ver.c b/dev/ddk/src/ddk_ver.c
index 9641fb34..5cce1c3d 100644
--- a/dev/ddk/src/ddk_ver.c
+++ b/dev/ddk/src/ddk_ver.c
@@ -6,7 +6,7 @@
------------------------------------------- */
-#include <ddk/ddk.h>
+#include <DDKKit/ddk.h>
#ifndef kDDKVersionHighest
#define kDDKVersionHighest 1
diff --git a/dev/kernel/ArchKit/ArchKit.h b/dev/kernel/ArchKit/ArchKit.h
index 51d47bc8..e70ce988 100644
--- a/dev/kernel/ArchKit/ArchKit.h
+++ b/dev/kernel/ArchKit/ArchKit.h
@@ -63,10 +63,14 @@ namespace Kernel
return *(volatile DataKind*)(base + reg);
}
+ /// @brief Hardware Abstraction Layer
namespace HAL
{
+ /// @brief Check whether this pointer is a bitmap object.
+ /// @param ptr argument to verify.
+ /// @param whether successful or not.
auto mm_is_bitmap(VoidPtr ptr) -> Bool;
- }
+ } // namespace HAL
} // namespace Kernel
typedef Kernel::Void (*rt_syscall_proc)(Kernel::VoidPtr);
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index 3d0cee00..0791b28f 100644
--- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -5,11 +5,11 @@
------------------------------------------- */
#include <modules/ACPI/ACPIFactoryInterface.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <HALKit/AMD64/Processor.h>
#include <ArchKit/ArchKit.h>
#include <KernelKit/BinaryMutex.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/Timer.h>
#include <modules/CoreGfx/TextMgr.h>
#include <NewKit/KernelPanic.h>
diff --git a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
index b1fa95a4..273ea96b 100644
--- a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <ArchKit/ArchKit.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <NewKit/KString.h>
#include <SignalKit/Signals.h>
diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
index 30463f5d..8b092509 100644
--- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
@@ -6,7 +6,7 @@
#include <StorageKit/AHCI.h>
#include <ArchKit/ArchKit.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/HardwareThreadScheduler.h>
#include <KernelKit/CodeMgr.h>
#include <modules/ACPI/ACPIFactoryInterface.h>
diff --git a/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc b/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc
index 6b287060..cb766477 100644
--- a/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <HALKit/AMD64/Processor.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
index 2ef2fda7..38a1742b 100644
--- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
+++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
@@ -17,7 +17,7 @@
#include <KernelKit/DeviceMgr.h>
#include <KernelKit/DriveMgr.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/KPC.h>
#include <FirmwareKit/EPM.h>
#include <StorageKit/AHCI.h>
@@ -133,9 +133,9 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
}
/// prepare command header.
- volatile HbaCmdHeader* command_header = ((HbaCmdHeader*)(((UInt64)kSATAHba->Ports[kSATAIndex].Clb)));
+ volatile HbaCmdHeader* command_header = ((volatile HbaCmdHeader*)(((UInt64)kSATAHba->Ports[kSATAIndex].Clb)));
- /// jump to found slot.
+ /// Offset to specific command slot.
command_header += slot;
MUST_PASS(command_header);
@@ -144,9 +144,9 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
command_header->Write = Write;
command_header->Prdtl = (UInt16)((size_buffer - 1) / 8);
- HbaCmdTbl* command_table = (HbaCmdTbl*)((VoidPtr)((UInt64)command_header->Ctba));
+ volatile HbaCmdTbl* command_table = (volatile HbaCmdTbl*)((VoidPtr)((UInt64)command_header->Ctba));
- rt_set_memory(command_table, 0, sizeof(HbaCmdTbl) + (command_header->Prdtl - 1) * sizeof(HbaPrdtEntry));
+ rt_set_memory((HbaCmdTbl*)command_table, 0, sizeof(HbaCmdTbl) + (command_header->Prdtl - 1) * sizeof(HbaPrdtEntry));
MUST_PASS(command_table);
@@ -154,7 +154,7 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
UInt16 prd_i = 0;
- for (; prd_i < (command_header->Prdtl - 1); prd_i++)
+ for (; prd_i < (command_header->Prdtl - 1); ++prd_i)
{
command_table->Prdt[prd_i].Dbc = ((command_header->Prdtl - 1) / 8);
command_table->Prdt[prd_i].Dba = ((UInt32)(UInt64)buffer_phys);
@@ -164,11 +164,13 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
buffer_phys += command_table->Prdt[prd_i].Dbc;
}
- FisRegH2D* h2d_fis = (FisRegH2D*)(&command_table->Cfis);
+ volatile FisRegH2D* h2d_fis = (volatile FisRegH2D*)(&command_table->Cfis);
+
+ rt_set_memory((FisRegH2D*)h2d_fis, 0, sizeof(FisRegH2D));
h2d_fis->FisType = kFISTypeRegH2D;
h2d_fis->CmdOrCtrl = CommandOrCTRL;
- h2d_fis->Command = Identify ? (kAHCICmdIdentify) : (Write ? kAHCICmdWriteDmaEx : kAHCICmdReadDmaEx);
+ h2d_fis->Command = (Identify ? (kAHCICmdIdentify) : (Write ? kAHCICmdWriteDmaEx : kAHCICmdReadDmaEx));
h2d_fis->Lba0 = (lba)&0xFF;
h2d_fis->Lba1 = (lba >> 8) & 0xFF;
@@ -213,6 +215,8 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
err_global_get() = kErrorDiskIsCorrupted;
return;
}
+
+ err_global_get() = kErrorSuccess;
}
/***
diff --git a/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc b/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
index 60f5bda3..a1d86bf4 100644
--- a/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
@@ -7,7 +7,7 @@
#include <HALKit/ARM64/Processor.h>
#include <KernelKit/DebugOutput.h>
#include <HALKit/ARM64/ApplicationProcessor.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#define GICD_BASE 0x08000000 // Distributor base address
#define GICC_BASE 0x08010000 // CPU interface base address
diff --git a/dev/kernel/HALKit/ARM64/HalKernelMain.cc b/dev/kernel/HALKit/ARM64/HalKernelMain.cc
index e5ee3d42..573d6341 100644
--- a/dev/kernel/HALKit/ARM64/HalKernelMain.cc
+++ b/dev/kernel/HALKit/ARM64/HalKernelMain.cc
@@ -10,7 +10,7 @@
#include <KernelKit/FileMgr.h>
#include <KernelKit/MemoryMgr.h>
#include <KernelKit/PEFCodeMgr.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <NewKit/Json.h>
#include <KernelKit/CodeMgr.h>
#include <modules/ACPI/ACPIFactoryInterface.h>
diff --git a/dev/kernel/HALKit/ARM64/HalSchedulerCoreARM64.cc b/dev/kernel/HALKit/ARM64/HalSchedulerCoreARM64.cc
index 629e4eca..ae74bcba 100644
--- a/dev/kernel/HALKit/ARM64/HalSchedulerCoreARM64.cc
+++ b/dev/kernel/HALKit/ARM64/HalSchedulerCoreARM64.cc
@@ -4,7 +4,7 @@
------------------------------------------- */
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
diff --git a/dev/kernel/HALKit/ARM64/HalSchedulerCorePrimitivesARM64.cc b/dev/kernel/HALKit/ARM64/HalSchedulerCorePrimitivesARM64.cc
index 00a11fac..f0caa44e 100644
--- a/dev/kernel/HALKit/ARM64/HalSchedulerCorePrimitivesARM64.cc
+++ b/dev/kernel/HALKit/ARM64/HalSchedulerCorePrimitivesARM64.cc
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <HALKit/ARM64/Processor.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
diff --git a/dev/kernel/KernelKit/CodeMgr.h b/dev/kernel/KernelKit/CodeMgr.h
index 15ec420e..c781263e 100644
--- a/dev/kernel/KernelKit/CodeMgr.h
+++ b/dev/kernel/KernelKit/CodeMgr.h
@@ -33,5 +33,11 @@ namespace Kernel
/// @note This sets up a new stack, anything on the main function that calls the Kernel will not be accessible.
/// @param main the start of the process.
/// @return The team's process id.
- ProcessID rtl_create_process(rtl_main_kind main, const Char* process_name) noexcept;
+ ProcessID rtl_create_kernel_process(rtl_main_kind main, const Char* process_name) noexcept;
+
+ /// @brief Executes a new process from a function. User code only.
+ /// @note This sets up a new stack, anything on the main function that calls the Kernel will not be accessible.
+ /// @param main the start of the process.
+ /// @return The team's process id.
+ ProcessID rtl_create_user_process(rtl_main_kind main, const Char* process_name) noexcept;
} // namespace Kernel
diff --git a/dev/kernel/KernelKit/DriveMgr.h b/dev/kernel/KernelKit/DriveMgr.h
index 9d461703..a8c3dec5 100644
--- a/dev/kernel/KernelKit/DriveMgr.h
+++ b/dev/kernel/KernelKit/DriveMgr.h
@@ -7,7 +7,7 @@
#ifndef INC_DRIVE_MANAGER_H
#define INC_DRIVE_MANAGER_H
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <CompilerKit/CompilerKit.h>
#include <KernelKit/DebugOutput.h>
#include <KernelKit/DeviceMgr.h>
diff --git a/dev/kernel/KernelKit/IDylibObject.h b/dev/kernel/KernelKit/IDylibObject.h
index f02fb9d3..faecede0 100644
--- a/dev/kernel/KernelKit/IDylibObject.h
+++ b/dev/kernel/KernelKit/IDylibObject.h
@@ -16,7 +16,7 @@
namespace Kernel
{
- /// @brief DLL class object. A handle to a shared library.
+ /// @brief Dylib class object. A handle to a shared library.
class IDylibObject
{
public:
diff --git a/dev/kernel/KernelKit/IPEFDylibObject.h b/dev/kernel/KernelKit/IPEFDylibObject.h
index 22360e50..8c4ec22a 100644
--- a/dev/kernel/KernelKit/IPEFDylibObject.h
+++ b/dev/kernel/KernelKit/IPEFDylibObject.h
@@ -13,7 +13,7 @@
#include <KernelKit/PEF.h>
#include <NewKit/Defines.h>
#include <KernelKit/PEFCodeMgr.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/IDylibObject.h>
namespace Kernel
diff --git a/dev/kernel/KernelKit/KPC.h b/dev/kernel/KernelKit/KPC.h
index c6724282..3e52be64 100644
--- a/dev/kernel/KernelKit/KPC.h
+++ b/dev/kernel/KernelKit/KPC.h
@@ -21,44 +21,44 @@
namespace Kernel
{
- typedef Int32 HError;
+ typedef Int32 KPCError;
- inline HError kErrorLocalNumber = 0UL;
+ inline KPCError kErrorLocalNumber = 0UL;
- inline constexpr HError kErrorSuccess = 0;
- inline constexpr HError kErrorExecutable = 33;
- inline constexpr HError kErrorExecutableLib = 34;
- inline constexpr HError kErrorFileNotFound = 35;
- inline constexpr HError kErrorDirectoryNotFound = 36;
- inline constexpr HError kErrorDiskReadOnly = 37;
- inline constexpr HError kErrorDiskIsFull = 38;
- inline constexpr HError kErrorProcessFault = 39;
- inline constexpr HError kErrorSocketHangUp = 40;
- inline constexpr HError kErrorThreadLocalStorage = 41;
- inline constexpr HError kErrorMath = 42;
- inline constexpr HError kErrorNoNetwork = 43;
- inline constexpr HError kErrorHeapOutOfMemory = 44;
- inline constexpr HError kErrorNoSuchDisk = 45;
- inline constexpr HError kErrorFileExists = 46;
- inline constexpr HError kErrorFormatFailed = 47;
- inline constexpr HError kErrorNetworkTimeout = 48;
- inline constexpr HError kErrorInternal = 49;
- inline constexpr HError kErrorForkAlreadyExists = 50;
- inline constexpr HError kErrorOutOfTeamSlot = 51;
- inline constexpr HError kErrorHeapNotPresent = 52;
- inline constexpr HError kErrorNoEntrypoint = 53;
- inline constexpr HError kErrorDiskIsCorrupted = 54;
- inline constexpr HError kErrorDisk = 55;
- inline constexpr HError kErrorInvalidData = 56;
- inline constexpr HError kErrorAsync = 57;
- inline constexpr HError kErrorNonBlocking = 58;
- inline constexpr HError kErrorIPC = 59;
- inline constexpr HError kErrorSign = 60;
- inline constexpr HError kErrorInvalidCreds = 61;
- inline constexpr HError kErrorCDTrayBroken = 62;
- inline constexpr HError kErrorUnrecoverableDisk = 63;
- inline constexpr HError kErrorFileLocked = 64;
- inline constexpr HError kErrorUnimplemented = -1;
+ inline constexpr KPCError kErrorSuccess = 0;
+ inline constexpr KPCError kErrorExecutable = 33;
+ inline constexpr KPCError kErrorExecutableLib = 34;
+ inline constexpr KPCError kErrorFileNotFound = 35;
+ inline constexpr KPCError kErrorDirectoryNotFound = 36;
+ inline constexpr KPCError kErrorDiskReadOnly = 37;
+ inline constexpr KPCError kErrorDiskIsFull = 38;
+ inline constexpr KPCError kErrorProcessFault = 39;
+ inline constexpr KPCError kErrorSocketHangUp = 40;
+ inline constexpr KPCError kErrorThreadLocalStorage = 41;
+ inline constexpr KPCError kErrorMath = 42;
+ inline constexpr KPCError kErrorNoNetwork = 43;
+ inline constexpr KPCError kErrorHeapOutOfMemory = 44;
+ inline constexpr KPCError kErrorNoSuchDisk = 45;
+ inline constexpr KPCError kErrorFileExists = 46;
+ inline constexpr KPCError kErrorFormatFailed = 47;
+ inline constexpr KPCError kErrorNetworkTimeout = 48;
+ inline constexpr KPCError kErrorInternal = 49;
+ inline constexpr KPCError kErrorForkAlreadyExists = 50;
+ inline constexpr KPCError kErrorOutOfTeamSlot = 51;
+ inline constexpr KPCError kErrorHeapNotPresent = 52;
+ inline constexpr KPCError kErrorNoEntrypoint = 53;
+ inline constexpr KPCError kErrorDiskIsCorrupted = 54;
+ inline constexpr KPCError kErrorDisk = 55;
+ inline constexpr KPCError kErrorInvalidData = 56;
+ inline constexpr KPCError kErrorAsync = 57;
+ inline constexpr KPCError kErrorNonBlocking = 58;
+ inline constexpr KPCError kErrorIPC = 59;
+ inline constexpr KPCError kErrorSign = 60;
+ inline constexpr KPCError kErrorInvalidCreds = 61;
+ inline constexpr KPCError kErrorCDTrayBroken = 62;
+ inline constexpr KPCError kErrorUnrecoverableDisk = 63;
+ inline constexpr KPCError kErrorFileLocked = 64;
+ inline constexpr KPCError kErrorUnimplemented = -1;
/// @brief Does a system wide bug check.
/// @param void no params are needed.
diff --git a/dev/kernel/KernelKit/PECodeMgr.h b/dev/kernel/KernelKit/PECodeMgr.h
index 1e445b9f..cf7f625d 100644
--- a/dev/kernel/KernelKit/PECodeMgr.h
+++ b/dev/kernel/KernelKit/PECodeMgr.h
@@ -3,7 +3,7 @@
Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
File: PECodeMgr.h
- Purpose: PE32+ Code Mgr and DLL mgr.
+ Purpose: PE32+ Code Mgr and Dylib mgr.
Revision History:
diff --git a/dev/kernel/KernelKit/PEFCodeMgr.h b/dev/kernel/KernelKit/PEFCodeMgr.h
index aa82f84d..3d96c6c0 100644
--- a/dev/kernel/KernelKit/PEFCodeMgr.h
+++ b/dev/kernel/KernelKit/PEFCodeMgr.h
@@ -13,10 +13,10 @@
#include <KernelKit/FileMgr.h>
#ifndef INC_PROCESS_SCHEDULER_H
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#endif
-#define kPefApplicationMime "application/vnd-zka-executable"
+#define kPefApplicationMime "application/vnd-amlal-executable"
namespace Kernel
{
@@ -65,7 +65,7 @@ namespace Kernel
namespace Utils
{
- ProcessID rtl_create_process(PEFLoader& exec, const Int32& procKind) noexcept;
+ ProcessID rtl_create_user_process(PEFLoader& exec, const Int32& procKind) noexcept;
} // namespace Utils
} // namespace Kernel
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.h b/dev/kernel/KernelKit/ProcessScheduler.h
index b9c1676b..5e88d1ec 100644
--- a/dev/kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/kernel/KernelKit/ProcessScheduler.h
@@ -370,7 +370,7 @@ namespace Kernel
} // namespace Kernel
#include <KernelKit/ThreadLocalStorage.h>
-#include <KernelKit/UserProcessScheduler.inl>
+#include <KernelKit/ProcessScheduler.inl>
////////////////////////////////////////////////////
// END
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.inl b/dev/kernel/KernelKit/ProcessScheduler.inl
index 4b3d5820..b624e623 100644
--- a/dev/kernel/KernelKit/UserProcessScheduler.inl
+++ b/dev/kernel/KernelKit/ProcessScheduler.inl
@@ -2,7 +2,7 @@
Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
- FILE: UserProcessScheduler.inl
+ FILE: ProcessScheduler.inl
PURPOSE: Low level/Ring-3 Process scheduler.
------------------------------------------- */
@@ -21,7 +21,7 @@ namespace Kernel
if (!this->ProcessMemoryHeap)
{
- kout << "Process Memory is empty.\r";
+ kout << "Process's heap is empty.\r";
return No;
}
diff --git a/dev/kernel/KernelKit/ThreadLocalStorage.inl b/dev/kernel/KernelKit/ThreadLocalStorage.inl
index 0517dada..f9f9da12 100644
--- a/dev/kernel/KernelKit/ThreadLocalStorage.inl
+++ b/dev/kernel/KernelKit/ThreadLocalStorage.inl
@@ -8,7 +8,7 @@
//! @brief Allocate resources from the process's heap storage.
#ifndef INC_PROCESS_SCHEDULER_H
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#endif
template <typename T>
diff --git a/dev/kernel/KernelKit/XCOFF.h b/dev/kernel/KernelKit/XCOFF.h
index d38c2e02..eb536c01 100644
--- a/dev/kernel/KernelKit/XCOFF.h
+++ b/dev/kernel/KernelKit/XCOFF.h
@@ -16,18 +16,19 @@
#include <NewKit/Defines.h>
-#define kXCOFF64Magic (0x01F7)
+#define kXCOFF64Magic (0x01F7)
+#define kXCOFF64ForkNameLen (256U)
#define kXCOFFRelFlg (0x0001)
#define kXCOFFExecutable (0x0002)
#define kXCOFFLnno (0x0004)
#define kXCOFFLSyms (0x0008)
-struct XCoffFileHeader;
-struct XCoffForkHeader;
+struct XCOFF_FILE_HEADER;
+struct XCOFF_FORK_HEADER;
/// @brief XCoff file header, meant for POWER apps.
-typedef struct XCoffFileHeader
+typedef struct XCOFF_FILE_HEADER
{
Kernel::UInt16 fMagic;
Kernel::UInt16 fTarget;
@@ -36,16 +37,17 @@ typedef struct XCoffFileHeader
Kernel::UIntPtr fSymPtr;
Kernel::UInt32 fNumSyms;
Kernel::UInt16 fOptHdr; // ?: Number of bytes in optional header
-} XCoffFileHeader64;
+} XCOFF_FILE_HEADER, XCOFF_FILE_HEADER32, XCOFF_FILE_HEADER64;
-#define kForkNameLen (256U)
-
-/// @brief This the executable manifest fork.
-typedef struct XCoffForkHeader
+/// @brief This the executable's manifest fork, designed for NeFS.
+/// @param fPropertiesXMLFork The XML fork of the executable.
+/// @param fDynamicLoaderFork The DYLD fork metadata.
+/// @param fCodeSignFork Executable's certificate contained in a fork.
+typedef struct XCOFF_FORK_HEADER
{
- Kernel::Char fPropertiesXMLFork[kForkNameLen];
- Kernel::Char fDynamicLoaderFork[kForkNameLen];
- Kernel::Char fCodeSignFork[kForkNameLen];
-} XCoffForkHeader;
+ Kernel::Char fPropertiesXMLFork[kXCOFF64ForkNameLen];
+ Kernel::Char fDynamicLoaderFork[kXCOFF64ForkNameLen];
+ Kernel::Char fCodeSignFork[kXCOFF64ForkNameLen];
+} XCOFF_FORK_HEADER;
#endif // ifndef INC_XOCFF_H
diff --git a/dev/kernel/src/BinaryMutex.cc b/dev/kernel/src/BinaryMutex.cc
index 6426e5df..112bdbc7 100644
--- a/dev/kernel/src/BinaryMutex.cc
+++ b/dev/kernel/src/BinaryMutex.cc
@@ -4,7 +4,7 @@
------------------------------------------- */
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/BinaryMutex.h>
namespace Kernel
diff --git a/dev/kernel/src/CodeMgr.cc b/dev/kernel/src/CodeMgr.cc
index 37c5b726..407c9775 100644
--- a/dev/kernel/src/CodeMgr.cc
+++ b/dev/kernel/src/CodeMgr.cc
@@ -6,7 +6,7 @@
#include <KernelKit/CodeMgr.h>
#include <NewKit/Utils.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
@@ -17,7 +17,7 @@ namespace Kernel
/// @return if the process was started or not.
/***********************************************************************************/
- ProcessID rtl_create_process(rtl_main_kind main, const Char* process_name) noexcept
+ ProcessID rtl_create_user_process(rtl_main_kind main, const Char* process_name) noexcept
{
if (!process_name ||
*process_name == 0)
diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc
index b6f1bede..3d6c5ec4 100644
--- a/dev/kernel/src/FS/HeFS.cc
+++ b/dev/kernel/src/FS/HeFS.cc
@@ -16,7 +16,7 @@
#include <NewKit/KString.h>
#include <NewKit/Utils.h>
#include <FirmwareKit/EPM.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/User.h>
#endif // ifdef __FSKIT_INCLUDES_HeFS__
diff --git a/dev/kernel/src/FS/NeFS.cc b/dev/kernel/src/FS/NeFS.cc
index 2e7cfbe7..0490b39c 100644
--- a/dev/kernel/src/FS/NeFS.cc
+++ b/dev/kernel/src/FS/NeFS.cc
@@ -16,7 +16,7 @@
#include <NewKit/KernelPanic.h>
#include <NewKit/KString.h>
#include <NewKit/Utils.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/User.h>
#include <KernelKit/DriveMgr.h>
diff --git a/dev/kernel/src/HardwareThreadScheduler.cc b/dev/kernel/src/HardwareThreadScheduler.cc
index 1aa990ac..9a2762bc 100644
--- a/dev/kernel/src/HardwareThreadScheduler.cc
+++ b/dev/kernel/src/HardwareThreadScheduler.cc
@@ -5,7 +5,7 @@
------------------------------------------- */
#include <ArchKit/ArchKit.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/HardwareThreadScheduler.h>
#include <CFKit/Property.h>
diff --git a/dev/kernel/src/IDylibObject.cc b/dev/kernel/src/IDylibObject.cc
index c760fe57..7fab3595 100644
--- a/dev/kernel/src/IDylibObject.cc
+++ b/dev/kernel/src/IDylibObject.cc
@@ -10,6 +10,6 @@
#include <KernelKit/IDylibObject.h>
#include <KernelKit/DebugOutput.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
using namespace Kernel;
diff --git a/dev/kernel/src/IPEFDylibObject.cc b/dev/kernel/src/IPEFDylibObject.cc
index 29fe578e..49709bc1 100644
--- a/dev/kernel/src/IPEFDylibObject.cc
+++ b/dev/kernel/src/IPEFDylibObject.cc
@@ -10,7 +10,7 @@
#include <KernelKit/DebugOutput.h>
#include <KernelKit/PEF.h>
#include <KernelKit/IPEFDylibObject.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/ThreadLocalStorage.h>
#include <NewKit/Defines.h>
diff --git a/dev/kernel/src/Network/IPCAddr.cc b/dev/kernel/src/Network/IPCAddr.cc
index 11466c7e..ae3f8d77 100644
--- a/dev/kernel/src/Network/IPCAddr.cc
+++ b/dev/kernel/src/Network/IPCAddr.cc
@@ -6,7 +6,7 @@
#include <NetworkKit/IPC.h>
#include <KernelKit/KPC.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
diff --git a/dev/kernel/src/Network/IPCMsg.cc b/dev/kernel/src/Network/IPCMsg.cc
index 288cfb6d..ee089176 100644
--- a/dev/kernel/src/Network/IPCMsg.cc
+++ b/dev/kernel/src/Network/IPCMsg.cc
@@ -6,7 +6,7 @@
#include <NetworkKit/IPC.h>
#include <KernelKit/KPC.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc
index b8139439..d85fdba8 100644
--- a/dev/kernel/src/PEFCodeMgr.cc
+++ b/dev/kernel/src/PEFCodeMgr.cc
@@ -7,7 +7,7 @@
#include <KernelKit/DebugOutput.h>
#include <KernelKit/MemoryMgr.h>
#include <KernelKit/PEFCodeMgr.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <NewKit/Defines.h>
#include <NewKit/KernelPanic.h>
#include <NewKit/OwnPtr.h>
@@ -246,7 +246,7 @@ namespace Kernel
namespace Utils
{
- ProcessID rtl_create_process(PEFLoader& exec, const Int32& process_kind) noexcept
+ ProcessID rtl_create_user_process(PEFLoader& exec, const Int32& process_kind) noexcept
{
auto errOrStart = exec.FindStart();
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/ProcessScheduler.cc
index 99dbc410..45a82d54 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/ProcessScheduler.cc
@@ -12,7 +12,7 @@
/// @brief Low level/Ring-3 process scheduler.
/***********************************************************************************/
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/HardwareThreadScheduler.h>
#include <KernelKit/IPEFDylibObject.h>
#include <ArchKit/ArchKit.h>
diff --git a/dev/kernel/src/UserProcessTeam.cc b/dev/kernel/src/ProcessTeam.cc
index a0a39054..80c9e5da 100644
--- a/dev/kernel/src/UserProcessTeam.cc
+++ b/dev/kernel/src/ProcessTeam.cc
@@ -9,7 +9,7 @@
/// @brief Process teams implementation.
/***********************************************************************************/
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
namespace Kernel
{
diff --git a/dev/kernel/src/ThreadLocalStorage.cc b/dev/kernel/src/ThreadLocalStorage.cc
index e784943d..8f537c06 100644
--- a/dev/kernel/src/ThreadLocalStorage.cc
+++ b/dev/kernel/src/ThreadLocalStorage.cc
@@ -9,7 +9,7 @@
#include <NewKit/KString.h>
#include <CFKit/Property.h>
-#include <KernelKit/UserProcessScheduler.h>
+#include <KernelKit/ProcessScheduler.h>
#include <KernelKit/ThreadLocalStorage.h>
/***********************************************************************************/
diff --git a/dev/user/SystemCalls.h b/dev/user/SystemCalls.h
index 2d14fa3c..4a211eef 100644
--- a/dev/user/SystemCalls.h
+++ b/dev/user/SystemCalls.h
@@ -28,19 +28,19 @@ typedef Ref SocketRef;
/// @brief Dynamic Loader API.
// ------------------------------------------------------------------------------------------ //
-/// @brief Get function which is part of the DLL.
+/// @brief Get function which is part of the Dylib.
/// @param symbol the symbol to look for
-/// @param dll_handle the DLL handle.
+/// @param dll_handle the Dylib handle.
/// @return the proc pointer.
IMPORT_C Ref LdrGetDLLSymbolFromHandle(_Input const Char* symbol, _Input Ref dll_handle);
-/// @brief Open DLL handle.
+/// @brief Open Dylib handle.
/// @param path
/// @param drv
/// @return
IMPORT_C Ref LdrOpenDLLHandle(_Input const Char* path, _Input const Char* drive_letter);
-/// @brief Close DLL handle
+/// @brief Close Dylib handle
/// @param dll_handle
/// @return
IMPORT_C UInt32 LdrCloseDLLHandle(_Input Ref* dll_handle);
diff --git a/docs/drawio/SOFT_SCHED_DESIGN.drawio b/docs/drawio/SOFT_SCHED_DESIGN.drawio
index 32a7800d..8ea95ba6 100644
--- a/docs/drawio/SOFT_SCHED_DESIGN.drawio
+++ b/docs/drawio/SOFT_SCHED_DESIGN.drawio
@@ -4,7 +4,7 @@
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
- <mxCell id="ifhO3zQZNW-sXvZMTmu8-2" value="libsci DLL inside code (RING 3)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+ <mxCell id="ifhO3zQZNW-sXvZMTmu8-2" value="libsci Dylib inside code (RING 3)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="235.5" y="340" width="360" height="30" as="geometry"/>
</mxCell>
<mxCell id="ifhO3zQZNW-sXvZMTmu8-3" value="Running code (RING 3)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">