summaryrefslogtreecommitdiffhomepage
path: root/src/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-01-19 21:51:20 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-01-19 21:51:20 +0100
commit7ec77f42f45fb3b3479818636943923b9416a170 (patch)
tree33f608b06d865285fb6ef1eaf752ae77cbb16a17 /src/kernel
parent465a99f17f9e8f56813f225f09a6a1a498be9deb (diff)
chore: {kernel, launch, libSystem}: Implementation and WiP improvements.v0.1.211
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/DmaKit/DmaPool.h15
-rw-r--r--src/kernel/GfxKit/FB.h8
-rw-r--r--src/kernel/GfxKit/GPU.h36
-rw-r--r--src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc2
-rw-r--r--src/kernel/HALKit/AMD64/HalCoreSystemCalls+DDK.cc (renamed from src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc)6
-rw-r--r--src/kernel/HALKit/AMD64/HalCoreSystemCalls+NeLaunch.cc9
-rw-r--r--src/kernel/KernelKit/TraceSrv.h26
-rw-r--r--src/kernel/amd64-desktop.make3
-rw-r--r--src/kernel/src/UserProcessScheduler.cc4
9 files changed, 87 insertions, 22 deletions
diff --git a/src/kernel/DmaKit/DmaPool.h b/src/kernel/DmaKit/DmaPool.h
index 1cf3200f..880daab7 100644
--- a/src/kernel/DmaKit/DmaPool.h
+++ b/src/kernel/DmaKit/DmaPool.h
@@ -7,17 +7,10 @@
#include <KernelKit/DebugOutput.h>
-#ifdef __NE_AMD64__
-#include <HALKit/AMD64/Processor.h>
-#define kNeDMAPoolStart (0x1000000)
-#define kNeDMAPoolSize (0x1000000)
-#elif defined(__NE_ARM64__)
-#include <HALKit/ARM64/Processor.h>
-
-/// @todo what reference offset shall we use?
-#define kNeDMAPoolStart (0x1000000)
-#define kNeDMAPoolSize (0x1000000)
-#endif
+#include __nekernel_halkit_include_processor
+
+#define kNeDMAPoolStart (__nekernel_dma_pool_start)
+#define kNeDMAPoolSize (__nekernel_dma_pool_size)
#define kNeDMABestAlign (8)
diff --git a/src/kernel/GfxKit/FB.h b/src/kernel/GfxKit/FB.h
index 79539995..462608ae 100644
--- a/src/kernel/GfxKit/FB.h
+++ b/src/kernel/GfxKit/FB.h
@@ -12,10 +12,10 @@ namespace Kernel {
class FBDeviceInterface;
struct FBDevicePacket;
-typedef UInt32 FBCoord2x2;
-typedef UInt32 FBDim2x2;
-typedef UInt32 FBColorProfile;
-typedef UInt32 FBFlags;
+using FBCoord2x2 = UInt32;
+using FBDim2x2 = UInt32;
+using FBColorProfile = UInt32;
+using FBFlags = UInt32;
/// @brief Framebuffer device interface packet.
/// @details This structure is used to send and receive data from the framebuffer device.
diff --git a/src/kernel/GfxKit/GPU.h b/src/kernel/GfxKit/GPU.h
new file mode 100644
index 00000000..78d71558
--- /dev/null
+++ b/src/kernel/GfxKit/GPU.h
@@ -0,0 +1,36 @@
+// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#ifndef GFXKIT_FB_H
+#define GFXKIT_FB_H
+
+#include <KernelKit/DeviceMgr.h>
+
+namespace Kernel {
+
+class GPUDeviceInterface;
+
+/// @brief Framebuffer device interface.
+/// @details This class is used to send and receive data from the framebuffer device.
+/// @note The class is derived from the IDevice class.
+class GPUDeviceInterface NE_DEVICE<VoidPtr> {
+ public:
+ GPUDeviceInterface(void (*out)(IDevice* self, GPUDeviceInterface* out),
+ void (*in)(IDevice* self, GPUDeviceInterface* in));
+
+ virtual ~GPUDeviceInterface() override;
+
+ public:
+ GPUDeviceInterface& operator=(const GPUDeviceInterface&) = default;
+ GPUDeviceInterface(const GPUDeviceInterface&) = default;
+ const Char* Name() const override;
+
+ public:
+ GPUDeviceInterface& operator<<(VoidPtr dat) override;
+ GPUDeviceInterface& operator>>(VoidPtr dat) override;
+};
+
+} // namespace Kernel
+
+#endif
diff --git a/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc b/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc
index 040f5daa..e977912f 100644
--- a/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc
+++ b/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc
@@ -12,7 +12,7 @@
EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip);
EXTERN_C Kernel::UIntPtr kApicBaseAddress;
-static bool kIsRunning = NO;
+STATIC BOOL kIsRunning{NO};
/// @brief Notify APIC and PIC that we're done with the interrupt.
/// @note
diff --git a/src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc b/src/kernel/HALKit/AMD64/HalCoreSystemCalls+DDK.cc
index 4e089de0..12429e48 100644
--- a/src/kernel/HALKit/AMD64/HalCoreSystemCalls.cc
+++ b/src/kernel/HALKit/AMD64/HalCoreSystemCalls+DDK.cc
@@ -1,7 +1,9 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
#include <ArchKit/ArchKit.h>
-using namespace Kernel;
+namespace Kernel {
+
+} \ No newline at end of file
diff --git a/src/kernel/HALKit/AMD64/HalCoreSystemCalls+NeLaunch.cc b/src/kernel/HALKit/AMD64/HalCoreSystemCalls+NeLaunch.cc
new file mode 100644
index 00000000..29740f00
--- /dev/null
+++ b/src/kernel/HALKit/AMD64/HalCoreSystemCalls+NeLaunch.cc
@@ -0,0 +1,9 @@
+// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#include <ArchKit/ArchKit.h>
+
+namespace Kernel {
+
+}
diff --git a/src/kernel/KernelKit/TraceSrv.h b/src/kernel/KernelKit/TraceSrv.h
index 79fbd7da..9da48561 100644
--- a/src/kernel/KernelKit/TraceSrv.h
+++ b/src/kernel/KernelKit/TraceSrv.h
@@ -13,12 +13,36 @@ namespace TraceSrv {
inline constexpr auto kDebugCmdLen = 256U;
inline constexpr auto kDebugPort = 51820;
- /// \brief Debug Magic Value
inline constexpr auto kDebugMagic = "NE1.0.0;";
inline constexpr auto kDebugVersion = 0x0100;
inline constexpr auto kDebugDelim = ';';
inline constexpr auto kDebugEnd = '\r';
+ enum class TRACE_SOURCE_OPCODE {
+ kStop,
+ kContinue,
+ kStepIn,
+ kStepOver,
+ kStepOut,
+ kSetBreakpoint,
+ kRemoveBreakpoint,
+ kGetStackTrace,
+ kGetSourceMessage,
+ kGetVariables,
+ kEvaluateExpression,
+ kUnknown
+ };
+
+ inline constexpr auto kDebugSymbolLen = 0x0100;
+
+ struct TRACE_SOURCE_MESSAGE {
+ Int32 fType;
+ Int32 fChksum;
+ Char fSymbol[kDebugSymbolLen];
+ UInt32 fOffset;
+ UInt32 fOpcode;
+ };
+
} // namespace TraceSrv
} // namespace Kernel
diff --git a/src/kernel/amd64-desktop.make b/src/kernel/amd64-desktop.make
index 88652718..f30c47df 100644
--- a/src/kernel/amd64-desktop.make
+++ b/src/kernel/amd64-desktop.make
@@ -5,7 +5,8 @@
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-ld
-CCFLAGS = -fshort-wchar -D__nekernel_max_cores=8 -c -D__NE_AMD64__ -D__NEOSKRNL__ -D__NE_VEPM__ -Wall -Wpedantic -Wextra -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_INCLUDES_OPENHEFS__ -D__FSKIT_INCLUDES_EXT2__ -D__NE_SUPPORT_NX__ -O0 -I../vendor -D__NEKERNEL__ -D__HAVE_NE_APIS__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../boot
+CCFLAGS = -fshort-wchar -D__nekernel_dma_pool_start=0x1000000 -D__nekernel_dma_pool_size=0x1000000 \
+ -D__nekernel_halkit_include_processor="<HALKit/AMD64/Processor.h>" -D__nekernel_max_cores=8 -c -D__NE_AMD64__ -D__NEOSKRNL__ -D__NE_VEPM__ -Wall -Wpedantic -Wextra -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_INCLUDES_OPENHEFS__ -D__FSKIT_INCLUDES_EXT2__ -D__NE_SUPPORT_NX__ -O0 -I../vendor -D__NEKERNEL__ -D__HAVE_NE_APIS__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../boot
ASM = nasm
diff --git a/src/kernel/src/UserProcessScheduler.cc b/src/kernel/src/UserProcessScheduler.cc
index 1d29b9fc..3b9e1a0f 100644
--- a/src/kernel/src/UserProcessScheduler.cc
+++ b/src/kernel/src/UserProcessScheduler.cc
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
@@ -12,7 +12,7 @@
#include <NeKit/Utils.h>
#include <SignalKit/Signals.h>
-///! BUGS: 0
+///! BUG COUNT: 0
namespace Kernel {
UserProcess::UserProcess() = default;