From fc67c4af554189c941c811486a0b2b21aa3f54ea Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 23 May 2025 04:07:12 +0200 Subject: feat!(kernel): Rename NewKit to NeKit. Signed-off-by: Amlal El Mahrouss --- dev/kernel/NeKit/Macros.h | 148 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 dev/kernel/NeKit/Macros.h (limited to 'dev/kernel/NeKit/Macros.h') diff --git a/dev/kernel/NeKit/Macros.h b/dev/kernel/NeKit/Macros.h new file mode 100644 index 00000000..5147863a --- /dev/null +++ b/dev/kernel/NeKit/Macros.h @@ -0,0 +1,148 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. + +------------------------------------------- */ + +#pragma once + +/***********************************************************************************/ +/// @file NeKit/Macros.h +/// @brief Core Types and Macros. +/***********************************************************************************/ + +#ifndef KIB +#define KIB(X) (Kernel::UInt64)((X) / 1024) +#endif + +#ifndef kib_cast +#define kib_cast(X) (Kernel::UInt64)((X) *1024) +#endif + +#ifndef MIB +#define MIB(X) (Kernel::UInt64)((Kernel::UInt64) KIB(X) / 1024) +#endif + +#ifndef mib_cast +#define mib_cast(X) (Kernel::UInt64)((Kernel::UInt64) kib_cast(X) * 1024) +#endif + +#ifndef GIB +#define GIB(X) (Kernel::UInt64)((Kernel::UInt64) MIB(X) / 1024) +#endif + +#ifndef gib_cast +#define gib_cast(X) (Kernel::UInt64)((Kernel::UInt64) mib_cast(X) * 1024) +#endif + +#ifndef TIB +#define TIB(X) (Kernel::UInt64)((Kernel::UInt64) GIB(X) / 1024) +#endif + +#ifndef tib_cast +#define tib_cast(X) ((Kernel::UInt64) gib_cast(X) * 1024) +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(a) \ + (((sizeof(a) / sizeof(*(a))) / (static_cast(!(sizeof(a) % sizeof(*(a))))))) +#endif + +#define DEPRECATED ATTRIBUTE(deprecated) + +#ifndef ALIGN +#define ALIGN(X) __attribute__((aligned(X))) +#endif // #ifndef ALIGN + +#ifndef ATTRIBUTE +#define ATTRIBUTE(...) __attribute__((__VA_ARGS__)) +#endif // #ifndef ATTRIBUTE + +#ifndef __NE_VER__ +#define __NE_VER__ (2024) +#endif // !__NE_VER__ + +#ifndef EXTERN +#define EXTERN extern +#endif + +#ifndef EXTERN_C +#define EXTERN_C extern "C" +#endif + +#ifndef MAKE_ENUM +#define MAKE_ENUM(NAME) enum NAME { +#endif + +#ifndef END_ENUM +#define END_ENUM() \ + } \ + ; +#endif + +#ifndef MAKE_STRING_ENUM +#define MAKE_STRING_ENUM(NAME) namespace NAME { +#endif + +#ifndef ENUM_STRING +#define ENUM_STRING(NAME, VAL) inline constexpr const char* e##NAME = VAL +#endif + +#ifndef END_STRING_ENUM +#define END_STRING_ENUM() } +#endif + +#ifndef RTL_ALLOCA +#define RTL_ALLOCA(sz) __builtin_alloca(sz) +#endif // #ifndef RTL_ALLOCA + +#ifndef CANT_REACH +#define CANT_REACH() __builtin_unreachable() +#endif + +#define kInvalidAddress 0xFBFBFBFBFBFBFBFB +#define kBadAddress 0x0000000000000000 +#define kMaxAddr 0xFFFFFFFFFFFFFFFF +#define kPathLen 0x100 + +#define PACKED ATTRIBUTE(packed) +#define NO_EXEC ATTRIBUTE(noexec) + +#define EXTERN extern +#define STATIC static + +#define CONST const + +#define STRINGIFY(X) #X +#define NE_UNUSED(X) ((Kernel::Void) X) + +#ifndef RGB +#define RGB(R, G, B) ((Kernel::UInt32)((0xFF << 24) | ((R) << 16) | ((G) << 8) | (B))) +#endif // !RGB + +#ifdef __NE_AMD64__ +#define dbg_break_point() asm volatile("int $3") +#else +#define dbg_break_point() ((Kernel::Void) 0) +#endif + +#define RTL_ENDIAN(address, value) \ + (((reinterpret_cast(address)[0]) == (value)) ? (Kernel::Endian::kEndianBig) \ + : (Kernel::Endian::kEndianLittle)) + +#define Yes true +#define No false + +#define YES true +#define NO false + +#define TRUE true +#define FALSE false + +#define BOOL Kernel::Boolean + +#ifdef RTL_INIT_OBJECT +#undef RTL_INIT_OBJECT +#endif // ifdef RTL_INIT_OBJECT + +#define RTL_INIT_OBJECT(OBJ, TYPE, ...) TYPE OBJ = TYPE(__VA_ARGS__) -- cgit v1.2.3 From e89d4a1402bdd32b8ad7e2ed04278b7ad54740c3 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 24 May 2025 10:00:22 +0200 Subject: feat(nekit)!: Change dbg_break_point to DBG_TRAP. BREAKING CHANGE: renamed symbol to match the codebase's macro style. Signed-off-by: Amlal El Mahrouss --- dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc | 13 +++---------- dev/kernel/HALKit/AMD64/HalKernelMain.cc | 2 +- dev/kernel/NeKit/Macros.h | 7 +++++-- dev/kernel/NetworkKit/NetworkDevice.h | 2 -- dev/kernel/src/Network/NetworkDevice.cc | 2 +- 5 files changed, 10 insertions(+), 16 deletions(-) (limited to 'dev/kernel/NeKit/Macros.h') diff --git a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc index 23ca8d0e..54a79571 100644 --- a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc +++ b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc @@ -54,8 +54,6 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp) { process.Leak().Signal.SignalArg = rsp; process.Leak().Signal.SignalID = SIGKILL; process.Leak().Signal.Status = process.Leak().Status; - - process.Leak().Crash(); } /// @brief Handle scheduler interrupt. @@ -76,15 +74,15 @@ EXTERN_C void idt_handle_scheduler(Kernel::UIntPtr rsp) { /// @brief Handle math fault. /// @param rsp EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp) { - hal_idt_send_eoi(8); - auto& process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); + process.Leak().Crash(); + + hal_idt_send_eoi(8); process.Leak().Signal.SignalArg = rsp; process.Leak().Signal.SignalID = SIGKILL; process.Leak().Signal.Status = process.Leak().Status; - process.Leak().Crash(); } /// @brief Handle any generic fault. @@ -102,13 +100,10 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp) { process.Leak().Signal.Status = process.Leak().Status; Kernel::kout << "Kernel: SIGKILL status.\r"; - - process.Leak().Crash(); } EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip) { auto& process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); hal_idt_send_eoi(3); @@ -131,8 +126,6 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp) { process.Leak().Signal.SignalArg = rsp; process.Leak().Signal.SignalID = SIGKILL; process.Leak().Signal.Status = process.Leak().Status; - - process.Leak().Crash(); } /// @brief Enter syscall from assembly. diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc index 65b522a6..c1558892 100644 --- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc @@ -153,7 +153,7 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept { if (!NeFS::fs_init_nefs()) { kout << "NeFS cannot be formated on the disk. Aborting\r"; - dbg_break_point(); + DBG_TRAP(); } hal_spin_kernel: diff --git a/dev/kernel/NeKit/Macros.h b/dev/kernel/NeKit/Macros.h index 5147863a..b46ffaa8 100644 --- a/dev/kernel/NeKit/Macros.h +++ b/dev/kernel/NeKit/Macros.h @@ -121,11 +121,14 @@ #endif // !RGB #ifdef __NE_AMD64__ -#define dbg_break_point() asm volatile("int $3") +#define DBG_TRAP() asm volatile("int $3") #else -#define dbg_break_point() ((Kernel::Void) 0) +#define DBG_TRAP() ((Kernel::Void) 0) #endif +#define LIKELY(ARG) ((ARG) ? MUST_PASS(NO) : ((Kernel::Void) 0)) +#define UNLIKELY(ARG) LIKELY(!(ARG)) + #define RTL_ENDIAN(address, value) \ (((reinterpret_cast(address)[0]) == (value)) ? (Kernel::Endian::kEndianBig) \ : (Kernel::Endian::kEndianLittle)) diff --git a/dev/kernel/NetworkKit/NetworkDevice.h b/dev/kernel/NetworkKit/NetworkDevice.h index 48fed575..e67916ee 100644 --- a/dev/kernel/NetworkKit/NetworkDevice.h +++ b/dev/kernel/NetworkKit/NetworkDevice.h @@ -36,8 +36,6 @@ class NetworkDevice final : public IDeviceObject { Boolean Name(const Char* newStr); private: - static constexpr auto kNetworkNameLen = 512; - Void (*fCleanup)(void); }; diff --git a/dev/kernel/src/Network/NetworkDevice.cc b/dev/kernel/src/Network/NetworkDevice.cc index 02cb0e73..7f93fa1b 100644 --- a/dev/kernel/src/Network/NetworkDevice.cc +++ b/dev/kernel/src/Network/NetworkDevice.cc @@ -20,7 +20,7 @@ Boolean NetworkDevice::Name(const Char* name) { if (*name == 0) return NO; - if (rt_string_len(name) > kNetworkNameLen) return NO; + if (rt_string_len(name) > rt_string_len(this->Name())) return NO; rt_copy_memory((VoidPtr) name, (VoidPtr) this->Name(), rt_string_len(this->Name())); -- cgit v1.2.3