summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-02-11 22:07:59 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-02-11 22:07:59 +0100
commitcc7161dd5684059d2e76f44327a30cea41c1f19d (patch)
tree9d2b24cedaf0f3f79b863bee5292b1d172412e7c
parentaa4cdda82b25557ecaf2085929f50edf208c9e31 (diff)
feat: kernel: Introduce 'NE_EXEC_LOADER' macro.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--src/boot/src/BootThread.cc2
-rw-r--r--src/boot/src/HEL/AMD64/BootEFI.cc7
-rw-r--r--src/kernel/KernelKit/ILoader.h4
-rw-r--r--src/kernel/KernelKit/PE32CodeMgr.h4
-rw-r--r--src/kernel/KernelKit/PEFCodeMgr.h2
-rw-r--r--src/kernel/KernelKit/ProcessScheduler.h6
6 files changed, 13 insertions, 12 deletions
diff --git a/src/boot/src/BootThread.cc b/src/boot/src/BootThread.cc
index bbb8fb5a..2da5f638 100644
--- a/src/boot/src/BootThread.cc
+++ b/src/boot/src/BootThread.cc
@@ -59,7 +59,7 @@ BootThread::BootThread(VoidPtr blob) : fStartAddress(nullptr), fBlob(blob) {
}
#endif
- writer.Write("BootZ: PE32+ executable detected (NeKernel Subsystem).\r");
+ writer.Write("BootZ: PE32+ executable detected. (NeKernel Subsystem)\r");
auto numSecs = header_ptr->NumberOfSections;
diff --git a/src/boot/src/HEL/AMD64/BootEFI.cc b/src/boot/src/HEL/AMD64/BootEFI.cc
index 27610dd6..54a66a51 100644
--- a/src/boot/src/HEL/AMD64/BootEFI.cc
+++ b/src/boot/src/HEL/AMD64/BootEFI.cc
@@ -73,6 +73,8 @@ EFI_EXTERN_C EFI_API Int32 BootloaderMain(EfiHandlePtr image_handle, EfiSystemTa
Boot::Stop();
}
+ writer.Write("BootZ: The NeKernel Bootloader. Copyright 2024-2026, Amlal El Mahrouss and al.\r");
+
for (SizeT index_vt = 0; index_vt < sys_table->NumberOfTableEntries; ++index_vt) {
Char* vendor_table =
reinterpret_cast<Char*>(sys_table->ConfigurationTable[index_vt].VendorTable);
@@ -127,9 +129,6 @@ EFI_EXTERN_C EFI_API Int32 BootloaderMain(EfiHandlePtr image_handle, EfiSystemTa
handover_hdr->f_BitMapStart = nullptr; /* Start of bitmap. */
handover_hdr->f_BitMapSize = 0UL; /* Size of bitmap in bytes. */
- kHandoverHeader->f_BitMapStart = nullptr; /* Start of bitmap. */
- kHandoverHeader->f_BitMapSize = 0UL; /* Size of bitmap in bytes. */
-
// Get memory map to determine available memory for bitmap allocation.
BS->GetMemoryMap(&size_struct_ptr, struct_ptr, &map_key, &sz_desc, &rev_desc);
@@ -154,11 +153,9 @@ EFI_EXTERN_C EFI_API Int32 BootloaderMain(EfiHandlePtr image_handle, EfiSystemTa
free_pages -= 1024;
// Set bitmap to use the first free page region found.
- kHandoverHeader->f_BitMapStart = first_free_page;
handover_hdr->f_BitMapStart = first_free_page;
// Convert pages to bytes (assuming 4K pages) for bitmap size.
- kHandoverHeader->f_BitMapSize = free_pages * 4096;
handover_hdr->f_BitMapSize = free_pages * 4096;
handover_hdr->f_FirmwareCustomTables[Kernel::HEL::kHandoverTableBS] = (VoidPtr) BS;
diff --git a/src/kernel/KernelKit/ILoader.h b/src/kernel/KernelKit/ILoader.h
index 8399e1ea..1cc0742d 100644
--- a/src/kernel/KernelKit/ILoader.h
+++ b/src/kernel/KernelKit/ILoader.h
@@ -10,7 +10,10 @@
#include <NeKit/ErrorOr.h>
#include <hint/CompilerHint.h>
+#define NE_EXEC_LOADER : public ::Kernel::ILoader
+
namespace Kernel {
+
/// @brief This interface is used to make loader contracts (MSCOFF, PEF).
/// @author Amlal El Mahrouss
class ILoader {
@@ -30,6 +33,7 @@ class ILoader {
return ErrorOr<VoidPtr>{};
}
};
+
} // namespace Kernel
#endif
diff --git a/src/kernel/KernelKit/PE32CodeMgr.h b/src/kernel/KernelKit/PE32CodeMgr.h
index ea2f7736..64fa989c 100644
--- a/src/kernel/KernelKit/PE32CodeMgr.h
+++ b/src/kernel/KernelKit/PE32CodeMgr.h
@@ -17,7 +17,7 @@
#include <NeKit/ErrorOr.h>
#include <NeKit/KString.h>
-#ifndef KERNELKIT_USERPROCESSSCHEDULER_H
+#ifndef KERNELKIT_PROCESS_SCHEDULER_H
#include <KernelKit/ProcessScheduler.h>
#endif
@@ -28,7 +28,7 @@ namespace Kernel {
/// \name PE32Loader
/// \brief PE32+ loader class.
///
-class PE32Loader : public ILoader {
+class PE32Loader NE_EXEC_LOADER {
private:
explicit PE32Loader() = delete;
diff --git a/src/kernel/KernelKit/PEFCodeMgr.h b/src/kernel/KernelKit/PEFCodeMgr.h
index a3ce74e9..96fb2e3b 100644
--- a/src/kernel/KernelKit/PEFCodeMgr.h
+++ b/src/kernel/KernelKit/PEFCodeMgr.h
@@ -26,7 +26,7 @@ namespace Kernel {
/// \name PEFLoader
/// \brief PEF loader class.
///
-class PEFLoader : public ILoader {
+class PEFLoader NE_EXEC_LOADER {
private:
explicit PEFLoader() = delete;
diff --git a/src/kernel/KernelKit/ProcessScheduler.h b/src/kernel/KernelKit/ProcessScheduler.h
index 41ecdf29..1c4b7842 100644
--- a/src/kernel/KernelKit/ProcessScheduler.h
+++ b/src/kernel/KernelKit/ProcessScheduler.h
@@ -2,8 +2,8 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
-#ifndef KERNELKIT_PROCESSSCHEDULER_H
-#define KERNELKIT_PROCESSSCHEDULER_H
+#ifndef KERNELKIT_PROCESS_SCHEDULER_H
+#define KERNELKIT_PROCESS_SCHEDULER_H
#include <KernelKit/KernelTaskScheduler.h>
#include <KernelKit/UserProcessScheduler.h>
@@ -21,4 +21,4 @@ inline UserProcessTeam kRTUserTeam;
#endif
-#endif \ No newline at end of file
+#endif