diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-01-13 05:43:49 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-01-13 05:48:18 +0100 |
| commit | faf73d5258b3c61ea1a84efa6bed543d6bfd5321 (patch) | |
| tree | 6d77156202d11a378d326b25a82f4b8b41fe0200 /src | |
| parent | d5263778065e62a4a20f3af236f6dde7bbb3afc4 (diff) | |
feat: kernel: API tweaks and new FMT specs for NeKernel.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/kernel/KernelKit/HeapMgr.h | 2 | ||||
| -rw-r--r-- | src/kernel/KernelKit/PCI/DMA.h | 2 | ||||
| -rw-r--r-- | src/kernel/KernelKit/PCI/IO.h | 2 | ||||
| -rw-r--r-- | src/kernel/KernelKit/ThreadLocalStorage.h | 2 | ||||
| -rw-r--r-- | src/kernel/KernelKit/UserProcessScheduler.h | 2 | ||||
| -rw-r--r-- | src/kernel/NeKit/Variant.h | 6 | ||||
| -rw-r--r-- | src/kernel/NeKit/Variant.inl | 13 | ||||
| -rw-r--r-- | src/kernel/NetworkKit/NetworkDevice.h | 2 | ||||
| -rw-r--r-- | src/kernel/src/BitMapMgr.cc | 6 | ||||
| -rw-r--r-- | src/kernel/src/PEFCodeMgr.cc | 9 | ||||
| -rw-r--r-- | src/libSystem/SystemKit/System.h | 4 | ||||
| -rw-r--r-- | src/libSystem/src/SystemCalls.cc | 5 |
12 files changed, 34 insertions, 21 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()), diff --git a/src/libSystem/SystemKit/System.h b/src/libSystem/SystemKit/System.h index 4e3cc264..a8cf05f2 100644 --- a/src/libSystem/SystemKit/System.h +++ b/src/libSystem/SystemKit/System.h @@ -324,7 +324,9 @@ IMPORT_C SInt32 PrintIn(IORef file /* nullptr to direct to stdout */, const Char IMPORT_C IORef PrintCreate(Void); -IMPORT_C SInt32 PrintRelease(IORef); +IMPORT_C UInt64 PrintSize(IORef ref); + +IMPORT_C SInt32 PrintRelease(IORef ref); IMPORT_C IORef PrintGet(const Char* path); diff --git a/src/libSystem/src/SystemCalls.cc b/src/libSystem/src/SystemCalls.cc index 0059d55d..07f5241b 100644 --- a/src/libSystem/src/SystemCalls.cc +++ b/src/libSystem/src/SystemCalls.cc @@ -217,3 +217,8 @@ IMPORT_C SInt32 PrintOut(_Input IORef desc, const Char* fmt, ...) { return *ret; } + +IMPORT_C UInt64 PrintSize(IORef ref) { + MUST_PASS(ref); + return *static_cast<UInt64*>(libsys_syscall_arg_2(SYSCALL_HASH("PrintSize"), ref)); +}
\ No newline at end of file |
