diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-01-10 23:55:23 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-01-10 23:55:23 +0100 |
| commit | 8154646d1dcc09c6e6a40f992e3ce03fd3cb0b2b (patch) | |
| tree | 4ce125e283d74193e2f42d54cb2d0abc008861e5 /src | |
| parent | 7a95bf4f8e0de0648da156ffaaf647c184869dad (diff) | |
chore: release prep for NeKernel+Nectar.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc | 48 | ||||
| -rw-r--r-- | src/kernel/MACROS_MAP.md | 5 | ||||
| -rw-r--r-- | src/libSystem/src/SystemCalls.cc | 54 | ||||
| -rw-r--r-- | src/modules/CoreGfx/CoreGfx.h | 2 |
4 files changed, 79 insertions, 30 deletions
diff --git a/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc b/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc index bb735ffb..7ee4a69c 100644 --- a/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc +++ b/src/kernel/HALKit/ARM64/HalCoreInterruptHandler.cc @@ -26,26 +26,26 @@ STATIC void hal_int_send_eoi(UInt8 vector) { /// @param rsp EXTERN_C Kernel::Void int_handle_gpf(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_int_send_eoi(13); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; } /// @brief Handle page fault. /// @param rsp EXTERN_C void int_handle_pf(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_int_send_eoi(14); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; } /// @brief Handle scheduler interrupt. @@ -67,28 +67,28 @@ EXTERN_C void int_handle_scheduler(Kernel::UIntPtr rsp) { /// @param rsp EXTERN_C void int_handle_math(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_int_send_eoi(8); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; } /// @brief Handle any generic fault. /// @param rsp EXTERN_C void int_handle_generic(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_int_send_eoi(30); Kernel::kout << "Kernel: Generic Process Fault.\r"; - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; Kernel::kout << "Kernel: SIGKILL status.\r"; } @@ -98,25 +98,25 @@ EXTERN_C Kernel::Void int_handle_breakpoint(Kernel::UIntPtr rip) { hal_int_send_eoi(3); - process.Leak().Signal.SignalArg = rip; - process.Leak().Signal.SignalID = SIGTRAP; + process.Signal.SignalArg = rip; + process.Signal.SignalID = SIGTRAP; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.Status = process.Status; - process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; + process.Status = Kernel::ProcessStatusKind::kFrozen; } /// @brief Handle #UD fault. /// @param rsp EXTERN_C void int_handle_ud(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_int_send_eoi(6); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; } /// @brief Enter syscall from assembly (libSystem only) diff --git a/src/kernel/MACROS_MAP.md b/src/kernel/MACROS_MAP.md deleted file mode 100644 index bae5aef1..00000000 --- a/src/kernel/MACROS_MAP.md +++ /dev/null @@ -1,5 +0,0 @@ -# __nekernel: Configuration Macros of NeKernel. - -- `__nekernel_max_cores` -> Max SMP cores usable by NeKernel's scheduler. -- `__nekernel_boot_core_index` -> Index of the boot core (0, 1, or 3) - diff --git a/src/libSystem/src/SystemCalls.cc b/src/libSystem/src/SystemCalls.cc index 0574d7ba..2651fb28 100644 --- a/src/libSystem/src/SystemCalls.cc +++ b/src/libSystem/src/SystemCalls.cc @@ -6,6 +6,8 @@ #include <libSystem/SystemKit/Syscall.h> #include <libSystem/SystemKit/System.h> #include <libSystem/SystemKit/Verify.h> +#include "hint/CompilerHint.h" +#include "libSystem/SystemKit/Macros.h" using namespace LibSystem; @@ -148,6 +150,58 @@ IMPORT_C UInt64 IoTellFile(_Input Ref desc) { return *ret; } +IMPORT_C SInt32 PrintRelease(_Input IORef buf) { + SInt32* ret = static_cast<SInt32*>(libsys_syscall_arg_2(SYSCALL_HASH("PrintRelease"), static_cast<VoidPtr>(buf))); + if (!ret) return -kErrorInvalidData; + + return static_cast<SInt32>(*ret); +} + +IMPORT_C IORef PrintCreate(Void) { + return static_cast<IORef>(libsys_syscall_arg_1(SYSCALL_HASH("PrintCreate"))); +} + + +IMPORT_C VoidPtr MmCreateHeap(UInt64 initial_size, UInt32 max_size) { + return static_cast<VoidPtr>(libsys_syscall_arg_3(SYSCALL_HASH("MmCreateHeap"), + reinterpret_cast<VoidPtr>(&initial_size), + reinterpret_cast<VoidPtr>(&max_size))); +} + +IMPORT_C SInt32 MmDestroyHeap(VoidPtr heap) +{ + auto ret = libsys_syscall_arg_2(SYSCALL_HASH("MmDestroyHeap"), static_cast<VoidPtr>(heap)); + return *static_cast<SInt32*>(ret); +} + +IMPORT_C SInt32 PrintIn(_Input IORef desc, const Char* fmt, ...) { + va_list args; + va_start(args, fmt); + + auto buf = StrFmt(fmt, args); + + va_end(args); + + // if truncated, `needed` >= kBufferSz; we still send truncated buffer + auto ret_ptr = libsys_syscall_arg_3(SYSCALL_HASH("PrintIn"), static_cast<VoidPtr>(desc), + Verify::sys_safe_cast<Char, Void>(buf)); + + if (!ret_ptr) return -kErrorInvalidData; + + auto ret = static_cast<const volatile SInt32*>(ret_ptr); + + return *ret; +} + +IMPORT_C IORef PrintGet(const Char* path) { + return static_cast<IORef>(libsys_syscall_arg_2(SYSCALL_HASH("PrintGet"), + Verify::sys_safe_cast<Char, Void>(path))); +} + +IMPORT_C ErrRef ErrGetLastError(Void) { + return *static_cast<ErrRef*>(libsys_syscall_arg_1(SYSCALL_HASH("ErrGetLastError"))); +} + IMPORT_C SInt32 PrintOut(_Input IORef desc, const Char* fmt, ...) { va_list args; va_start(args, fmt); diff --git a/src/modules/CoreGfx/CoreGfx.h b/src/modules/CoreGfx/CoreGfx.h index 470dd510..c22aee38 100644 --- a/src/modules/CoreGfx/CoreGfx.h +++ b/src/modules/CoreGfx/CoreGfx.h @@ -11,7 +11,7 @@ #define cg_color(R, G, B) RGB(R, G, B) -#define cg_get_clear_clr() RGB(0, 0, 0x80) +#define cg_get_clear_clr() RGB(0, 0, 0) #define cg_clear() kCGCursor = 0UL |
