diff options
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"> |
