summaryrefslogtreecommitdiffhomepage
path: root/src/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-01-13 05:43:49 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-01-13 05:48:18 +0100
commitfaf73d5258b3c61ea1a84efa6bed543d6bfd5321 (patch)
tree6d77156202d11a378d326b25a82f4b8b41fe0200 /src/kernel
parentd5263778065e62a4a20f3af236f6dde7bbb3afc4 (diff)
feat: kernel: API tweaks and new FMT specs for NeKernel.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/KernelKit/HeapMgr.h2
-rw-r--r--src/kernel/KernelKit/PCI/DMA.h2
-rw-r--r--src/kernel/KernelKit/PCI/IO.h2
-rw-r--r--src/kernel/KernelKit/ThreadLocalStorage.h2
-rw-r--r--src/kernel/KernelKit/UserProcessScheduler.h2
-rw-r--r--src/kernel/NeKit/Variant.h6
-rw-r--r--src/kernel/NeKit/Variant.inl13
-rw-r--r--src/kernel/NetworkKit/NetworkDevice.h2
-rw-r--r--src/kernel/src/BitMapMgr.cc6
-rw-r--r--src/kernel/src/PEFCodeMgr.cc9
10 files changed, 26 insertions, 20 deletions
diff --git a/src/kernel/KernelKit/HeapMgr.h b/src/kernel/KernelKit/HeapMgr.h
index 771ed181..272ce3fc 100644
--- a/src/kernel/KernelKit/HeapMgr.h
+++ b/src/kernel/KernelKit/HeapMgr.h
@@ -51,6 +51,6 @@ Int32 mm_set_ptr_flags(VoidPtr heap_ptr, UInt64 flags);
UInt64 mm_get_ptr_flags(VoidPtr heap_ptr);
} // namespace Kernel
-#include <KernelKit/HeapMgr.inl>
+#include "HeapMgr.inl"
#endif // !INC_KERNEL_HEAP_H
diff --git a/src/kernel/KernelKit/PCI/DMA.h b/src/kernel/KernelKit/PCI/DMA.h
index d0d4c25b..38854f31 100644
--- a/src/kernel/KernelKit/PCI/DMA.h
+++ b/src/kernel/KernelKit/PCI/DMA.h
@@ -71,6 +71,6 @@ class DMAFactory final {
};
} // namespace Kernel
-#include <KernelKit/PCI/DMA.inl>
+#include "DMA.inl"
#endif
diff --git a/src/kernel/KernelKit/PCI/IO.h b/src/kernel/KernelKit/PCI/IO.h
index 0f7b048f..c34f3e43 100644
--- a/src/kernel/KernelKit/PCI/IO.h
+++ b/src/kernel/KernelKit/PCI/IO.h
@@ -56,7 +56,7 @@ inline Array<UShort, Sz> make_ports(UShort base) {
} // namespace Kernel
#ifdef __NE_AMD64__
-#include <KernelKit/PCI/IOArray+AMD64.inl>
+#include "IOArray+AMD64.inl"
#else
#error Please provide platform specific code for the I/O
#endif // ifdef __NE_AMD64__
diff --git a/src/kernel/KernelKit/ThreadLocalStorage.h b/src/kernel/KernelKit/ThreadLocalStorage.h
index a69ba3d4..62b0abbc 100644
--- a/src/kernel/KernelKit/ThreadLocalStorage.h
+++ b/src/kernel/KernelKit/ThreadLocalStorage.h
@@ -59,7 +59,7 @@ EXTERN_C Kernel::Void rt_install_tib(THREAD_INFORMATION_BLOCK* TIB, THREAD_INFOR
/// @brief TLS check (syscall)
EXTERN_C Kernel::Bool tls_check_syscall_impl(Kernel::VoidPtr TIB);
-#include <KernelKit/ThreadLocalStorage.inl>
+#include "ThreadLocalStorage.inl"
// last rev 7/7/24
diff --git a/src/kernel/KernelKit/UserProcessScheduler.h b/src/kernel/KernelKit/UserProcessScheduler.h
index 126be648..2271002c 100644
--- a/src/kernel/KernelKit/UserProcessScheduler.h
+++ b/src/kernel/KernelKit/UserProcessScheduler.h
@@ -271,7 +271,7 @@ class UserProcessHelper final {
} // namespace Kernel
#include <KernelKit/ThreadLocalStorage.h>
-#include <KernelKit/UserProcessScheduler.inl>
+#include "UserProcessScheduler.inl"
////////////////////////////////////////////////////
// END
diff --git a/src/kernel/NeKit/Variant.h b/src/kernel/NeKit/Variant.h
index 41c5f942..2f4ce1ff 100644
--- a/src/kernel/NeKit/Variant.h
+++ b/src/kernel/NeKit/Variant.h
@@ -54,9 +54,7 @@ class Variant final {
RefAny Leak();
template <typename T>
- T* As() {
- return reinterpret_cast<T*>(fPtr);
- }
+ T* As();
VariantKind& Kind();
@@ -66,4 +64,6 @@ class Variant final {
};
} // namespace Kernel
+#include "Variant.inl"
+
#endif
diff --git a/src/kernel/NeKit/Variant.inl b/src/kernel/NeKit/Variant.inl
new file mode 100644
index 00000000..bad41d72
--- /dev/null
+++ b/src/kernel/NeKit/Variant.inl
@@ -0,0 +1,13 @@
+// Copyright 2024-2025, 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 NEKIT_VARIANT_INL
+#define NEKIT_VARIANT_INL
+
+template <typename T>
+inline T* Kernel::Variant::As() {
+ return reinterpret_cast<T*>(fPtr);
+}
+
+#endif
diff --git a/src/kernel/NetworkKit/NetworkDevice.h b/src/kernel/NetworkKit/NetworkDevice.h
index 4f7c051d..31f62079 100644
--- a/src/kernel/NetworkKit/NetworkDevice.h
+++ b/src/kernel/NetworkKit/NetworkDevice.h
@@ -76,6 +76,6 @@ using DBGNetworkDevice = NetworkDevice;
using LTENetworkDevice = NetworkDevice;
} // namespace Kernel
-#include <NetworkKit/NetworkDevice.inl>
+#include "NetworkDevice.inl"
#endif // !__INC_NETWORK_DEVICE_H__
diff --git a/src/kernel/src/BitMapMgr.cc b/src/kernel/src/BitMapMgr.cc
index d15b2a75..40bbe837 100644
--- a/src/kernel/src/BitMapMgr.cc
+++ b/src/kernel/src/BitMapMgr.cc
@@ -52,6 +52,7 @@ namespace HAL {
kBitMapCursor += ptr_bit_set[kBitMapSizeIdx];
ptr_bit_set[kBitMapMagIdx] = 0UL;
+ ptr_bit_set[kBitMapSizeIdx] = 0UL;
ptr_bit_set[kBitMapUsedIdx] = No;
this->GetBitMapStatus(ptr_bit_set);
@@ -135,11 +136,6 @@ namespace HAL {
/// @brief Print Bitmap status
auto GetBitMapStatus(UIntPtr* ptr_bit_set) -> Void {
- if (!this->IsBitMap(ptr_bit_set)) {
- (Void)(kout << "Not a BitMap: " << hex_number((UIntPtr) ptr_bit_set) << kendl);
- return;
- }
-
(Void)(kout << "Magic: " << hex_number(ptr_bit_set[kBitMapMagIdx]) << kendl);
(Void)(kout << "Is Allocated? " << (ptr_bit_set[kBitMapUsedIdx] ? "YES" : "NO") << kendl);
(Void)(kout << "Size of BitMap (B): " << number(ptr_bit_set[kBitMapSizeIdx]) << kendl);
diff --git a/src/kernel/src/PEFCodeMgr.cc b/src/kernel/src/PEFCodeMgr.cc
index 79ec97e0..45471763 100644
--- a/src/kernel/src/PEFCodeMgr.cc
+++ b/src/kernel/src/PEFCodeMgr.cc
@@ -130,9 +130,8 @@ PEFLoader::PEFLoader(const Char* path) : fCachedBlob(nullptr), fFatBinary(false)
/// @brief PEF destructor.
/***********************************************************************************/
PEFLoader::~PEFLoader() {
- if (fCachedBlob) {
+ if (fCachedBlob.Leak().Leak()) {
mm_free_ptr(fCachedBlob.Leak().Leak());
- fFile.Reset();
}
}
@@ -296,13 +295,11 @@ ProcessID rtl_create_user_process(PEFLoader& exec,
auto symname = exec.FindSymbol(kPefNameSymbol, kPefData);
- if (!symname) {
+ if (!symname.Leak().Leak()) {
symname = ErrorOr<VoidPtr>{(VoidPtr) rt_alloc_string("USER_PROCESS_PEF")};
}
- if (!symname) {
- return -1;
- }
+ if (!symname.Leak().Leak()) return kSchedInvalidPID;
ProcessID id =
UserProcessScheduler::The().Spawn(reinterpret_cast<const Char*>(symname.Leak().Leak()),