summaryrefslogtreecommitdiffhomepage
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/FSKit/Ext2+IFS.h2
-rw-r--r--src/kernel/FSKit/OpenHeFS.h6
-rw-r--r--src/kernel/FirmwareKit/EFI/EFI.h106
-rw-r--r--src/kernel/HALKit/AMD64/CxxAbi.cpp2
-rw-r--r--src/kernel/HALKit/AMD64/HalApplicationProcessor.cpp2
-rw-r--r--src/kernel/HALKit/AMD64/HalCommonAPI.asm12
-rw-r--r--src/kernel/HALKit/AMD64/HalHandoverStub.asm12
-rw-r--r--src/kernel/HALKit/AMD64/HalInterruptAPI.asm14
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelMain.cpp14
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelPanic.cpp11
-rw-r--r--src/kernel/HALKit/AMD64/HalUtilsAPI.asm12
-rw-r--r--src/kernel/HALKit/AMD64/Network/Generic+Basic+BNID.cpp (renamed from src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cpp)58
-rw-r--r--src/kernel/HALKit/AMD64/Paging.h4
-rw-r--r--src/kernel/HALKit/ARM64/CxxAbi.cpp1
-rw-r--r--src/kernel/HALKit/ARM64/Paging.h16
-rw-r--r--src/kernel/KernelKit/Config.h4
-rw-r--r--src/kernel/KernelKit/CoreProcessScheduler.h65
-rw-r--r--src/kernel/KernelKit/DriveMgr.h2
-rw-r--r--src/kernel/KernelKit/HardwareThreadScheduler.h6
-rw-r--r--src/kernel/KernelKit/ILoader.h6
-rw-r--r--src/kernel/KernelKit/KernelTask.h4
-rw-r--r--src/kernel/KernelKit/PCI/DMA.h2
-rw-r--r--src/kernel/KernelKit/PCI/Device.h2
-rw-r--r--src/kernel/KernelKit/TraceSrv.h1
-rw-r--r--src/kernel/KernelKit/UserProcessScheduler.h25
-rw-r--r--src/kernel/NeKit/Config.h10
-rw-r--r--src/kernel/NeKit/Macros.h4
-rw-r--r--src/kernel/NeKit/Utils.h6
-rw-r--r--src/kernel/NeKit/Vettable.h8
-rw-r--r--src/kernel/amd64-ci.make2
-rw-r--r--src/kernel/amd64-desktop.make2
-rw-r--r--src/kernel/src/ACPIFactoryInterface.cpp1
-rw-r--r--src/kernel/src/AsciiUtils.cpp5
-rw-r--r--src/kernel/src/CodeMgr.cpp3
-rw-r--r--src/kernel/src/FS/Ext2+IFS.cpp25
-rw-r--r--src/kernel/src/FS/NeFS+FileMgr.cpp10
-rw-r--r--src/kernel/src/FS/OpenHeFS+FileMgr.cpp44
-rw-r--r--src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp1
-rw-r--r--src/kernel/src/FileMgr.cpp1
-rw-r--r--src/kernel/src/GUIDWizard.cpp1
-rw-r--r--src/kernel/src/Gfx/FBDeviceInterface.cpp1
-rw-r--r--src/kernel/src/HardwareThreadScheduler.cpp3
-rw-r--r--src/kernel/src/HeapMgr.cpp7
-rw-r--r--src/kernel/src/InitializerList.cpp1
-rw-r--r--src/kernel/src/KernelTask.cpp9
-rw-r--r--src/kernel/src/PE32CodeMgr.cpp16
-rw-r--r--src/kernel/src/PEFCodeMgr.cpp16
-rw-r--r--src/kernel/src/Semaphore.cpp2
-rw-r--r--src/kernel/src/Storage/AHCIDeviceInterface.cpp1
-rw-r--r--src/kernel/src/Swap/DiskSwap.cpp1
-rw-r--r--src/kernel/src/UserMgr.cpp9
-rw-r--r--src/kernel/src/UserProcessScheduler.cpp19
-rw-r--r--src/kernel/src/UserProcessTeam.cpp2
-rw-r--r--src/kernel/src/ZXDCodeMgr.cpp3
54 files changed, 263 insertions, 339 deletions
diff --git a/src/kernel/FSKit/Ext2+IFS.h b/src/kernel/FSKit/Ext2+IFS.h
index 51767677..8c904710 100644
--- a/src/kernel/FSKit/Ext2+IFS.h
+++ b/src/kernel/FSKit/Ext2+IFS.h
@@ -32,7 +32,7 @@ class Ext2Context final {
}
}
- Ext2Context(const Ext2Context&) = delete;
+ Ext2Context(const Ext2Context&) = delete;
Ext2Context& operator=(const Ext2Context&) = delete;
Ext2Context(Ext2Context&& other) : drive(other.drive), superblock(other.superblock) {
diff --git a/src/kernel/FSKit/OpenHeFS.h b/src/kernel/FSKit/OpenHeFS.h
index 9983f6ff..a642c299 100644
--- a/src/kernel/FSKit/OpenHeFS.h
+++ b/src/kernel/FSKit/OpenHeFS.h
@@ -267,7 +267,7 @@ inline UInt32 hefs_hour_get(ATime raw_atime) {
/// @return the minute value.
/// @note The minute is stored in the lower 8 bits of the ATime value.
inline UInt32 hefs_minute_get(ATime raw_atime) {
- return (raw_atime) &0xFF;
+ return (raw_atime) & 0xFF;
}
inline constexpr UInt32 kOpenHeFSBaseYear = 1970;
@@ -387,10 +387,10 @@ class HeFileSystemParser final {
~HeFileSystemParser() = default;
public:
- HeFileSystemParser(const HeFileSystemParser&) = delete;
+ HeFileSystemParser(const HeFileSystemParser&) = delete;
HeFileSystemParser& operator=(const HeFileSystemParser&) = delete;
- HeFileSystemParser(HeFileSystemParser&&) = delete;
+ HeFileSystemParser(HeFileSystemParser&&) = delete;
HeFileSystemParser& operator=(HeFileSystemParser&&) = delete;
public:
diff --git a/src/kernel/FirmwareKit/EFI/EFI.h b/src/kernel/FirmwareKit/EFI/EFI.h
index e472a0f5..4e256403 100644
--- a/src/kernel/FirmwareKit/EFI/EFI.h
+++ b/src/kernel/FirmwareKit/EFI/EFI.h
@@ -56,7 +56,7 @@ typedef Char16 EfiChar16Type;
/// @brief Core Handle Kind
/// Self is like NT's Win32 HANDLE type.
typedef struct EfiHandle {
-} * EfiHandlePtr;
+}* EfiHandlePtr;
/* UEFI uses wide characters by default. */
typedef WideChar EfiCharType;
@@ -238,64 +238,42 @@ typedef struct EfiTableHeader {
UInt32 Reserved;
} EfiTableHeader;
-#define EFI_ACPI_TABLE_PROTOCOL_GUID \
- { \
- 0xffe06bdd, 0x6107, 0x46a6, { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c } \
- }
+#define EFI_ACPI_TABLE_PROTOCOL_GUID \
+ {0xffe06bdd, 0x6107, 0x46a6, {0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c}}
-#define EFI_LOAD_FILE_PROTOCOL_GUID \
- { \
- 0x56EC3091, 0x954C, 0x11d2, { 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
+#define EFI_LOAD_FILE_PROTOCOL_GUID \
+ {0x56EC3091, 0x954C, 0x11d2, {0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
-#define EFI_LOAD_FILE2_PROTOCOL_GUID \
- { \
- 0x4006c0c1, 0xfcb3, 0x403e, { 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d } \
- }
+#define EFI_LOAD_FILE2_PROTOCOL_GUID \
+ {0x4006c0c1, 0xfcb3, 0x403e, {0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d}}
-#define EFI_LOADED_IMAGE_PROTOCOL_GUID \
- { \
- 0x5B1B31A1, 0x9562, 0x11d2, { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } \
- }
+#define EFI_LOADED_IMAGE_PROTOCOL_GUID \
+ {0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
-#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
- { \
- 0x9042a9de, 0x23dc, 0x4a38, { 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \
- }
+#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
+ {0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a}}
-#define EFI_SIMPLE_NETWORK_PROTOCOL_GUID \
- { \
- 0xA19832B9, 0xAC25, 0x11D3, { 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
- }
+#define EFI_SIMPLE_NETWORK_PROTOCOL_GUID \
+ {0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d}}
#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
-#define EFI_IP4_PROTOCOL_GUID \
- { \
- 0x41d94cd2, 0x35b6, 0x455a, { 0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd } \
- }
+#define EFI_IP4_PROTOCOL_GUID \
+ {0x41d94cd2, 0x35b6, 0x455a, {0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd}}
#define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
-#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
- { \
- 0x0964e5b22, 0x6459, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
+#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
+ {0x0964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
-#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
- { \
- 0xbc62157e, 0x3e33, 0x4fec, { 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf } \
- }
+#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
+ {0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf}}
-#define EFI_DEVICE_PATH_PROTOCOL_GUID \
- { \
- 0x9576e91, 0x6d3f, 0x11d2, { 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
+#define EFI_DEVICE_PATH_PROTOCOL_GUID \
+ {0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
-#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
- { \
- 0x0964e5b22, 0x6459, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
+#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
+ {0x0964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
typedef UInt64(EfiImageUnload)(EfiHandlePtr ImageHandle);
@@ -350,17 +328,17 @@ typedef struct {
typedef EFI_STATUS(EFIAPI* EFI_SIMPLE_NETWORK_TRANSMIT)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This,
IN UInt32 HeaderSize, IN UInt32 BufferSize,
- IN Void* Buffer,
- IN EfiMacAddress* SrcAddr OPTIONAL,
+ IN Void* Buffer,
+ IN EfiMacAddress* SrcAddr OPTIONAL,
IN EfiMacAddress* DestAddr OPTIONAL,
- IN UInt16* Protocol OPTIONAL);
+ IN UInt16* Protocol OPTIONAL);
typedef EFI_STATUS(EFIAPI* EFI_SIMPLE_NETWORK_RECEIVE)(IN EFI_SIMPLE_NETWORK_PROTOCOL* This,
- OUT UInt32* HeaderSize OPTIONAL,
+ OUT UInt32* HeaderSize OPTIONAL,
IN OUT UInt32* BufferSize, OUT Void* Buffer,
- OUT EfiMacAddress* SrcAddr OPTIONAL,
+ OUT EfiMacAddress* SrcAddr OPTIONAL,
OUT EfiMacAddress* DestAddr OPTIONAL,
- OUT UInt16* Protocol OPTIONAL);
+ OUT UInt16* Protocol OPTIONAL);
typedef struct EFI_SIMPLE_NETWORK_PROTOCOL {
UInt64 Revision;
@@ -505,10 +483,8 @@ typedef struct EFI_GUID EFI_FINAL {
* Protocol stuff...
*/
-#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
- { \
- 0x387477c1, 0x69c7, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
+#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
+ {0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
/** some helpers */
#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
@@ -606,7 +582,7 @@ typedef struct {
} EfiInputKey;
typedef EfiStatusType(EFI_API* EfiInputReadKey)(IN EfiSimpleTextInputProtocol* This,
- OUT EfiInputKey* Key);
+ OUT EfiInputKey* Key);
typedef EfiStatusType(EFI_API* EfiInputReset)(IN EfiSimpleTextInputProtocol* This,
IN Boolean ExtendedChk);
@@ -664,7 +640,7 @@ typedef struct EfiSystemTable {
struct {
EFI_GUID VendorGUID;
VoidPtr VendorTable;
- } * ConfigurationTable;
+ }* ConfigurationTable;
} EfiSystemTable;
#define kEfiOk 0
@@ -725,10 +701,8 @@ enum {
#define EFI_EXTRA_DESCRIPTOR_SIZE 8
-#define EFI_MP_SERVICES_PROTOCOL_GUID \
- { \
- 0x3fdda605, 0xa76e, 0x4f46, { 0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08 } \
- }
+#define EFI_MP_SERVICES_PROTOCOL_GUID \
+ {0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08}}
#define PROCESSOR_AS_BSP_BIT 0x00000001
#define PROCESSOR_ENABLED_BIT 0x00000002
@@ -824,10 +798,8 @@ typedef struct EfiTime {
UInt8 Pad2;
} EfiTime;
-#define EFI_FILE_INFO_GUID \
- { \
- 0x09576e92, 0x6d3f, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
- }
+#define EFI_FILE_INFO_GUID \
+ {0x09576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
struct EfiFileInfo EFI_FINAL {
/// @brief Structure size.
@@ -895,8 +867,8 @@ typedef EfiStatusType EFI_API (*EfiMpServicesStartupThisAP)(
IN Void* ProcedureArgument OPTIONAL, OUT Boolean* Finished OPTIONAL);
typedef EfiStatusType EFI_API (*EfiMpServicesDisableThisAP)(IN struct _EfiMpServicesProtocol* Self,
- IN UInt32 ProcessorNumber,
- IN Boolean EnableAP,
+ IN UInt32 ProcessorNumber,
+ IN Boolean EnableAP,
IN UInt32* HealthFlag OPTIONAL);
typedef EfiStatusType EFI_API (*EfiMpServicesWhoAmI)(IN struct _EfiMpServicesProtocol* Self,
diff --git a/src/kernel/HALKit/AMD64/CxxAbi.cpp b/src/kernel/HALKit/AMD64/CxxAbi.cpp
index 50b6ccf2..c2487f85 100644
--- a/src/kernel/HALKit/AMD64/CxxAbi.cpp
+++ b/src/kernel/HALKit/AMD64/CxxAbi.cpp
@@ -11,7 +11,7 @@
#define kAtExitMaxDestructors (128U)
atexit_func_entry_t __atexit_funcs[kAtExitMaxDestructors];
-uarch_t __atexit_func_count;
+uarch_t __atexit_func_count;
/// @brief dynamic shared object Handle.
Kernel::UIntPtr __dso_handle;
diff --git a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cpp b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cpp
index 2ff27ee2..6e9f273f 100644
--- a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cpp
+++ b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cpp
@@ -59,7 +59,7 @@ STATIC Int32 kSMPInterrupt = 0;
STATIC UInt64 kAPICLocales[kMaxAPInsideSched] = {0};
STATIC VoidPtr kRawMADT = nullptr;
-STATIC HAL_HARDWARE_THREAD kHWThread[kSchedProcessLimitPerTeam] = {{}};
+STATIC HAL_HARDWARE_THREAD kHWThread[kCPSProcessLimitPerTeam] = {{}};
/// @brief Multiple APIC Descriptor Table.
struct HAL_APIC_MADT final SDT_OBJECT {
diff --git a/src/kernel/HALKit/AMD64/HalCommonAPI.asm b/src/kernel/HALKit/AMD64/HalCommonAPI.asm
index f571aba7..2202d046 100644
--- a/src/kernel/HALKit/AMD64/HalCommonAPI.asm
+++ b/src/kernel/HALKit/AMD64/HalCommonAPI.asm
@@ -1,11 +1,7 @@
-;; /*
-;; * ========================================================
-;; *
-;; * NeKernel
-;; * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-;; *
-;; * ========================================================
-;; */
+;; // SPDX-License-Identifier: Apache-2.0
+;; // 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/ne-foss-org/nekernel
section .text
diff --git a/src/kernel/HALKit/AMD64/HalHandoverStub.asm b/src/kernel/HALKit/AMD64/HalHandoverStub.asm
index b66f52e4..15c3a38b 100644
--- a/src/kernel/HALKit/AMD64/HalHandoverStub.asm
+++ b/src/kernel/HALKit/AMD64/HalHandoverStub.asm
@@ -1,11 +1,7 @@
-;; /*
-;; * ========================================================
-;; *
-;; * NeKernel
-;; * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-;; *
-;; * ========================================================
-;; */
+;; // SPDX-License-Identifier: Apache-2.0
+;; // 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/ne-foss-org/nekernel
[bits 64]
diff --git a/src/kernel/HALKit/AMD64/HalInterruptAPI.asm b/src/kernel/HALKit/AMD64/HalInterruptAPI.asm
index ada65474..cdb5ecdd 100644
--- a/src/kernel/HALKit/AMD64/HalInterruptAPI.asm
+++ b/src/kernel/HALKit/AMD64/HalInterruptAPI.asm
@@ -1,13 +1,7 @@
-;; /*
-;; * ---------------------------------------------------
-;; *
-;; * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-;; *
-;; * File: HalInterruptAPI.asm
-;; * Purpose: Interrupt API, redirect raw interrupts into their handlers.
-;; *
-;; * ---------------------------------------------------
-;; */
+;; // SPDX-License-Identifier: Apache-2.0
+;; // 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/ne-foss-org/nekernel
[bits 64]
diff --git a/src/kernel/HALKit/AMD64/HalKernelMain.cpp b/src/kernel/HALKit/AMD64/HalKernelMain.cpp
index 7468b76d..fabeb077 100644
--- a/src/kernel/HALKit/AMD64/HalKernelMain.cpp
+++ b/src/kernel/HALKit/AMD64/HalKernelMain.cpp
@@ -133,6 +133,8 @@ EXTERN_C Kernel::Int32 hal_init_platform(Kernel::HEL::BootInfoHeader* handover_h
return kEfiFail;
}
+EXTERN_C BOOL rtl_init_nic_rtl8139();
+
EXTERN_C Kernel::Void hal_real_init(Kernel::Void) {
HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
@@ -156,11 +158,17 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) {
PEFLoader ldr("/system/init.out");
- if (ldr.IsLoaded()) rtl_create_user_process(ldr, UserProcess::ExecutableKind::kExecutableKind);
- else ke_panic(RUNTIME_CHECK_PROCESS, "RuntimeCheck: Invalid Process Data!");
-
+ if (ldr.IsLoaded())
+ rtl_create_user_process(ldr, UserProcess::ExecutableKind::kExecutableKind);
+ else
+ ke_panic(RUNTIME_CHECK_PROCESS, "RuntimeCheck: Invalid Process Data!");
+
UserProcessScheduler::The().SwitchTeam(kMidUserTeam);
+#ifdef __HALKIT_INCLUDES_BNID__
+ rtl_init_nic_rtl8139();
+#endif
+
while (YES);
}
#endif // ifndef __NE_MODULAR_KERNEL_COMPONENTS__
diff --git a/src/kernel/HALKit/AMD64/HalKernelPanic.cpp b/src/kernel/HALKit/AMD64/HalKernelPanic.cpp
index d9afa204..a5f0b8bc 100644
--- a/src/kernel/HALKit/AMD64/HalKernelPanic.cpp
+++ b/src/kernel/HALKit/AMD64/HalKernelPanic.cpp
@@ -45,19 +45,18 @@ Void RecoveryFactory::Recover() {
HAL::rt_cli();
HAL::rt_halt();
}
-
+
alreadyDumped = YES;
-
- HeFileSystemMgr mgr;
- auto node = mgr.Open("/system/dump.dmp", "wb");
+ HeFileSystemMgr mgr;
+ auto node = mgr.Open("/system/dump.dmp", "wb");
if (node && hal_read_cr2()) mgr.Write(node, hal_read_cr2(), 0, 0x100);
if (node) mm_free_ptr(node);
-
+
node = nullptr;
#endif
-
+
while (YES) {
HAL::rt_cli();
HAL::rt_halt();
diff --git a/src/kernel/HALKit/AMD64/HalUtilsAPI.asm b/src/kernel/HALKit/AMD64/HalUtilsAPI.asm
index 2a0a5eff..aeb54c50 100644
--- a/src/kernel/HALKit/AMD64/HalUtilsAPI.asm
+++ b/src/kernel/HALKit/AMD64/HalUtilsAPI.asm
@@ -1,11 +1,7 @@
-;; /*
-;; * ========================================================
-;; *
-;; * NeKernel
-;; * Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
-;; *
-;; * ========================================================
-;; */
+;; // SPDX-License-Identifier: Apache-2.0
+;; // 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/ne-foss-org/nekernel
[bits 64]
diff --git a/src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cpp b/src/kernel/HALKit/AMD64/Network/Generic+Basic+BNID.cpp
index aacda36c..4c1d0f1f 100644
--- a/src/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cpp
+++ b/src/kernel/HALKit/AMD64/Network/Generic+Basic+BNID.cpp
@@ -5,66 +5,82 @@
#include <DmaKit/DmaPool.h>
#include <HALKit/AMD64/Processor.h>
+#include <KernelKit/PCI/Iterator.h>
#include <modules/ACPI/ACPIFactoryInterface.h>
+/// @note BNID (RTL8139' Basic Network Interface) driver
+
+#define kNetDevID (0x8139)
+#define kNetSubClass (0x10EC)
+
using namespace Kernel;
using namespace Kernel::HAL;
STATIC UInt16 kRTLIOBase = 0xFFFF;
-STATIC BOOL kTXRXEnabled = NO;
-
STATIC UInt32 kRXOffset = 0UL;
STATIC constexpr CONST UInt32 kRXBufferSize = 8192 + 16 + 1500;
STATIC UInt8* kRXUpperLayer = nullptr;
STATIC UInt8* kRXBuffer = nullptr;
+STATIC PCI::Device kNetDev;
+
/***********************************************************************************/
-///@brief RTL8139 Init routine.
+///@brief BNID Init routine.
/***********************************************************************************/
-EXTERN_C BOOL rtl_init_nic_rtl8139(UInt16 io_base) {
+EXTERN_C BOOL rtl_init_nic_rtl8139() {
+ STATIC BOOL kTXRXEnabled = NO;
if (kTXRXEnabled) return NO;
- kRTLIOBase = io_base;
+ PCI::Iterator iterator(Types::PciDeviceKind::NetworkController, 0x00);
- MUST_PASS(io_base != 0xFFFF);
+ for (SizeT device_index = 0; device_index < NE_BUS_COUNT; ++device_index) {
+ kNetDev = iterator[device_index].Leak(); // Leak device.
- kRXBuffer = reinterpret_cast<UInt8*>(rtl_dma_alloc(sizeof(UInt8) * kRXBufferSize, 0));
+ if (kNetDev.VendorId() == kNetSubClass && kNetDev.DeviceId() == kNetDevID) {
+ kNetDev.EnableMmio();
+ kNetDev.BecomeBusMaster();
+
+ break;
+ }
+ }
+
+ kRTLIOBase = kNetDev.Bar(0);
- MUST_PASS(kRXBuffer);
+ MUST_PASS(kRTLIOBase != 0xFFFF);
+
+ kRXBuffer = reinterpret_cast<UInt8*>(rtl_dma_alloc(sizeof(UInt8) * kRXBufferSize, 0));
/// Reset first.
- rt_out8(io_base + 0x37, 0x10);
+ rt_out8(kRTLIOBase + 0x37, 0x10);
UInt16 timeout = 0U;
- while (rt_in8(io_base + 0x37) & 0x10) {
+ while (rt_in8(kRTLIOBase + 0x37) & 0x10) {
++timeout;
if (timeout > 0x1000) break;
}
- if (timeout <= 0x1000) {
- return NO;
- }
-
- rt_out32(io_base + 0x30, (UInt32) (UIntPtr) kRXBuffer);
+ rt_out32(kRTLIOBase + 0x30, (UInt32) (UIntPtr) kRXBuffer);
- rt_out8(io_base + 0x37, 0x0C);
+ rt_out8(kRTLIOBase + 0x37, 0x0C);
- rt_out32(io_base + 0x44, 0xF | (1 << 7));
+ rt_out32(kRTLIOBase + 0x44, 0xF | (1 << 7));
- rt_out16(io_base + 0x3C, 0x0005);
+ rt_out16(kRTLIOBase + 0x3C, 0x0005);
kTXRXEnabled = YES;
+ kout << "The Basic Network Interface Driver (BNID) has been initialized.\r";
+
return YES;
}
/***********************************************************************************/
-/// @brief RTL8139 I/O interrupt handler.
+/// @brief BNID I/O interrupt handler.
/// @param rsp stack pointer.
/// @note This function is called when the device interrupts to retrieve network data.
/***********************************************************************************/
@@ -105,7 +121,7 @@ EXTERN_C Void rtl_rtl8139_interrupt_handler(UIntPtr rsp) {
}
/***********************************************************************************/
-/// @brief RTL8139 get upper layer function
+/// @brief BNID get upper layer function
/// @return the upper layer.
/// @retval nullptr if no upper layer is set.
/// @retval pointer to the upper layer if set.
@@ -116,7 +132,7 @@ EXTERN_C UInt8* rtl_rtl8139_get_upper_layer() {
}
/***********************************************************************************/
-/// @brief RTL8139 set upper layer function
+/// @brief BNID set upper layer function
/// @param layer the upper layer.
/***********************************************************************************/
diff --git a/src/kernel/HALKit/AMD64/Paging.h b/src/kernel/HALKit/AMD64/Paging.h
index f6ec0bf4..7b64835a 100644
--- a/src/kernel/HALKit/AMD64/Paging.h
+++ b/src/kernel/HALKit/AMD64/Paging.h
@@ -57,7 +57,9 @@ namespace Detail {
kPageEnable = 31,
};
- inline UInt8 control_register_cast(ControlRegisterBits reg) { return static_cast<UInt8>(reg); }
+ inline UInt8 control_register_cast(ControlRegisterBits reg) {
+ return static_cast<UInt8>(reg);
+ }
} // namespace Detail
auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, SizeT pad = 0) -> VoidPtr;
diff --git a/src/kernel/HALKit/ARM64/CxxAbi.cpp b/src/kernel/HALKit/ARM64/CxxAbi.cpp
index 3c7c7952..7f8c8245 100644
--- a/src/kernel/HALKit/ARM64/CxxAbi.cpp
+++ b/src/kernel/HALKit/ARM64/CxxAbi.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <KernelKit/DebugOutput.h>
#include <KernelKit/KPC.h>
#include <NeKit/CxxAbi.h>
diff --git a/src/kernel/HALKit/ARM64/Paging.h b/src/kernel/HALKit/ARM64/Paging.h
index 71e663ae..fd04c2da 100644
--- a/src/kernel/HALKit/ARM64/Paging.h
+++ b/src/kernel/HALKit/ARM64/Paging.h
@@ -41,14 +41,10 @@
/// Long format address range
-#define cPageMAll \
- { 0b000, 0b000 }
-#define cPageMToMax(M) \
- { M, 0b000 }
-#define cPageMaxToM(M) \
- { 0b000, M }
-#define cPageMToN(M, N) \
- { M, N }
+#define cPageMAll {0b000, 0b000}
+#define cPageMToMax(M) {M, 0b000}
+#define cPageMaxToM(M) {0b000, M}
+#define cPageMToN(M, N) {M, N}
namespace Kernel::HAL {
struct PACKED PTE_4KB final {
@@ -86,7 +82,9 @@ namespace Detail {
PageEnable = 31,
};
- inline UInt8 control_register_cast(ControlRegisterBits reg) { return static_cast<UInt8>(reg); }
+ inline UInt8 control_register_cast(ControlRegisterBits reg) {
+ return static_cast<UInt8>(reg);
+ }
} // namespace Detail
struct PDE_4KB final {
diff --git a/src/kernel/KernelKit/Config.h b/src/kernel/KernelKit/Config.h
index 8076a1c2..2df23851 100644
--- a/src/kernel/KernelKit/Config.h
+++ b/src/kernel/KernelKit/Config.h
@@ -8,8 +8,8 @@
#include <NeKit/Config.h>
-#define KERNELKIT_VERSION "0.0.2"
-#define KERNELKIT_VERSION_BCD 0x0002
+#define KERNELKIT_VERSION "0.0.3"
+#define KERNELKIT_VERSION_BCD 0x0003
namespace Kernel {
class UserProcessScheduler;
diff --git a/src/kernel/KernelKit/CoreProcessScheduler.h b/src/kernel/KernelKit/CoreProcessScheduler.h
index 0d915f12..71a75e1a 100644
--- a/src/kernel/KernelKit/CoreProcessScheduler.h
+++ b/src/kernel/KernelKit/CoreProcessScheduler.h
@@ -13,15 +13,14 @@
/// @brief Core Process Scheduler header file.
/// @author Amlal El Mahrouss (amlal@nekernel.org)
-#define kSchedMinMicroTime (AffinityKind::kStandard)
-#define kSchedInvalidPID (-1)
-#define kSchedProcessLimitPerTeam (32U)
-#define kSchedTeamCount (256U)
+#define kCPSMinMicroTime (AffinityKind::kStandard)
+#define kCPSInvalidPID (-1)
+#define kCPSProcessLimitPerTeam (32U)
+#define kCPSTeamCount (256U)
-#define kSchedMaxMemoryLimit (gib_cast(128)) /* max physical memory limit */
-#define kSchedMaxStackSz (kib_cast(8)) /* maximum stack size */
-
-#define kSchedNameLen (128U)
+#define kCPSMaxMemoryLimit (gib_cast(128)) /* max physical memory limit */
+#define kCPSMaxStackSz (kib_cast(8)) /* maximum stack size */
+#define kCPSNameLen (128U)
EXTERN_C void sched_idle_task(void);
@@ -60,19 +59,11 @@ struct ProcessHeapTree final {
TreeKind Color{TreeKind::kBlackTreeKind};
- struct ProcessHeapTree<T>* Parent {
- nullptr
- };
- struct ProcessHeapTree<T>* Child {
- nullptr
- };
-
- struct ProcessHeapTree<T>* Prev {
- nullptr
- };
- struct ProcessHeapTree<T>* Next {
- nullptr
- };
+ struct ProcessHeapTree<T>* Parent{nullptr};
+ struct ProcessHeapTree<T>* Child{nullptr};
+
+ struct ProcessHeapTree<T>* Prev{nullptr};
+ struct ProcessHeapTree<T>* Next{nullptr};
};
template <typename T>
@@ -87,21 +78,13 @@ struct ProcessFileTree final {
TreeKind Color{TreeKind::kBlackTreeKind};
- struct ProcessFileTree<T>* Parent {
- nullptr
- };
+ struct ProcessFileTree<T>* Parent{nullptr};
- struct ProcessFileTree<T>* Child {
- nullptr
- };
+ struct ProcessFileTree<T>* Child{nullptr};
- struct ProcessFileTree<T>* Prev {
- nullptr
- };
+ struct ProcessFileTree<T>* Prev{nullptr};
- struct ProcessFileTree<T>* Next {
- nullptr
- };
+ struct ProcessFileTree<T>* Next{nullptr};
};
template <typename T>
@@ -122,21 +105,13 @@ struct ProcessSpecialTree final {
TreeKind Color{TreeKind::kBlackTreeKind};
- struct ProcessSpecialTree<T>* Parent {
- nullptr
- };
+ struct ProcessSpecialTree<T>* Parent{nullptr};
- struct ProcessSpecialTree<T>* Child {
- nullptr
- };
+ struct ProcessSpecialTree<T>* Child{nullptr};
- struct ProcessSpecialTree<T>* Prev {
- nullptr
- };
+ struct ProcessSpecialTree<T>* Prev{nullptr};
- struct ProcessSpecialTree<T>* Next {
- nullptr
- };
+ struct ProcessSpecialTree<T>* Next{nullptr};
};
/***********************************************************************************/
diff --git a/src/kernel/KernelKit/DriveMgr.h b/src/kernel/KernelKit/DriveMgr.h
index 082ffc95..76ee5dcf 100644
--- a/src/kernel/KernelKit/DriveMgr.h
+++ b/src/kernel/KernelKit/DriveMgr.h
@@ -73,7 +73,7 @@ struct DriveTrait final {
Void (*fOutput)(DrivePacket& packet){nullptr};
Void (*fVerify)(DrivePacket& packet){nullptr};
Void (*fInit)(DrivePacket& packet){nullptr};
- const Char* (*fProtocol)(Void){nullptr};
+ const Char* (*fProtocol)(Void) {nullptr};
};
namespace Probe {
diff --git a/src/kernel/KernelKit/HardwareThreadScheduler.h b/src/kernel/KernelKit/HardwareThreadScheduler.h
index 53a971e5..a9183cd2 100644
--- a/src/kernel/KernelKit/HardwareThreadScheduler.h
+++ b/src/kernel/KernelKit/HardwareThreadScheduler.h
@@ -64,10 +64,10 @@ class HardwareThread final {
BOOL IsWakeup();
public:
- HAL::StackFramePtr StackFrame();
+ HAL::StackFramePtr StackFrame();
_Output const ThreadKind& Kind();
BOOL IsBusy();
- _Output const ThreadID& ID();
+ _Output const ThreadID& ID();
private:
HAL::StackFramePtr fStack{};
@@ -102,7 +102,7 @@ class HardwareThreadScheduler final : public ISchedulable {
public:
Ref<HardwareThread*> operator[](SizeT idx);
bool operator!();
- operator bool();
+ operator bool();
Bool IsUser() override { return Yes; }
diff --git a/src/kernel/KernelKit/ILoader.h b/src/kernel/KernelKit/ILoader.h
index f6e13023..9291340f 100644
--- a/src/kernel/KernelKit/ILoader.h
+++ b/src/kernel/KernelKit/ILoader.h
@@ -26,9 +26,9 @@ class ILoader {
public:
virtual _Output ErrorOr<VoidPtr> GetBlob() { return ErrorOr<VoidPtr>{}; }
- virtual _Output const Char* AsString() { return "(null)"; }
- virtual _Output const Char* MIME() { return "*/*"; }
- virtual _Output const Char* Path() { return "(null)"; }
+ virtual _Output const Char* AsString() { return "(null)"; }
+ virtual _Output const Char* MIME() { return "*/*"; }
+ virtual _Output const Char* Path() { return "(null)"; }
virtual _Output ErrorOr<VoidPtr> FindStart() { return ErrorOr<VoidPtr>{}; }
virtual _Output ErrorOr<VoidPtr> FindSymbol(_Input const Char*, _Input Int32) {
return ErrorOr<VoidPtr>{};
diff --git a/src/kernel/KernelKit/KernelTask.h b/src/kernel/KernelKit/KernelTask.h
index 6e319cbe..8227f7d1 100644
--- a/src/kernel/KernelKit/KernelTask.h
+++ b/src/kernel/KernelKit/KernelTask.h
@@ -24,11 +24,11 @@ using KID = ProcessID;
/// @author Amlal
class KernelTask final {
public:
- Char Name[kSchedNameLen] = {"KernelTask"};
+ Char Name[kCPSNameLen] = {"KernelTask"};
ProcessSubsystem SubSystem{ProcessSubsystem::kProcessSubsystemKernel};
HAL::StackFramePtr StackFrame{nullptr};
UInt8* StackReserve{nullptr};
- SizeT StackSize{kSchedMaxStackSz};
+ SizeT StackSize{kCPSMaxStackSz};
ProcessImage Image{};
/// @brief a KID is a Kernel ID, it is used to find a task running within the kernel.
diff --git a/src/kernel/KernelKit/PCI/DMA.h b/src/kernel/KernelKit/PCI/DMA.h
index 63b284cb..f27681de 100644
--- a/src/kernel/KernelKit/PCI/DMA.h
+++ b/src/kernel/KernelKit/PCI/DMA.h
@@ -47,7 +47,7 @@ class DMAWrapper final {
T* Get(UIntPtr off = 0);
public:
- operator bool();
+ operator bool();
bool operator!();
public:
diff --git a/src/kernel/KernelKit/PCI/Device.h b/src/kernel/KernelKit/PCI/Device.h
index b7737385..1adc9f24 100644
--- a/src/kernel/KernelKit/PCI/Device.h
+++ b/src/kernel/KernelKit/PCI/Device.h
@@ -51,7 +51,7 @@ class Device final {
}
public:
- UShort DeviceId();
+ UInt16 DeviceId();
UShort VendorId();
UShort InterfaceId();
UChar Class();
diff --git a/src/kernel/KernelKit/TraceSrv.h b/src/kernel/KernelKit/TraceSrv.h
index 998a14e9..47877349 100644
--- a/src/kernel/KernelKit/TraceSrv.h
+++ b/src/kernel/KernelKit/TraceSrv.h
@@ -7,6 +7,7 @@
#define KERNELKIT_TRACESRV_H
#include <CompilerKit/CompilerKit.h>
+#include <NeKit/NeKit.h>
namespace Kernel {
diff --git a/src/kernel/KernelKit/UserProcessScheduler.h b/src/kernel/KernelKit/UserProcessScheduler.h
index 4a160121..5018f1f6 100644
--- a/src/kernel/KernelKit/UserProcessScheduler.h
+++ b/src/kernel/KernelKit/UserProcessScheduler.h
@@ -52,20 +52,21 @@ class UserProcess final {
UIntPtr SignalID{0};
};
- Char Name[kSchedNameLen] = {"UserProcess"};
+ Char Name[kCPSNameLen] = {"UserProcess"};
ProcessSubsystem SubSystem{ProcessSubsystem::kProcessSubsystemUser};
User* Owner{nullptr};
HAL::StackFramePtr StackFrame{nullptr};
AffinityKind Affinity{AffinityKind::kStandard};
ProcessStatusKind Status{ProcessStatusKind::kKilled};
- UInt8 StackReserve[kSchedMaxStackSz];
- SizeT StackSize{kSchedMaxStackSz};
+ UInt8 StackReserve[kCPSMaxStackSz];
+ SizeT StackSize{kCPSMaxStackSz};
IDylibObject* DylibDelegate{nullptr};
SizeT MemoryCursor{0UL};
- SizeT MemoryLimit{kSchedMaxMemoryLimit};
- SizeT UsedMemory{0UL};
- UserProcessSignal Signal;
- ProcessImage Image;
+ SizeT MemoryLimit{kCPSMaxMemoryLimit};
+ SizeT UsedMemory{0UL}; /// AMLALE: This should be thread-safe as well.
+ SizeT UsedFiles{0UL}; /// AMLALE: This is a thread-safe counter to track file allocation count.
+ UserProcessSignal Signal;
+ ProcessImage Image;
private:
ProcessFileTree<Any>* FileTree{nullptr};
@@ -86,7 +87,7 @@ class UserProcess final {
ProcessTime RTime{0}; //! @brief Process run time.
ProcessTime UTime{0}; //! #brief Process used time.
- ProcessID ProcessId{kSchedInvalidPID};
+ ProcessID ProcessId{kCPSInvalidPID};
ExecutableKind Kind{ExecutableKind::kExecutableKind};
public:
@@ -193,7 +194,7 @@ inline bool operator>=(UserProcess::ExecutableKind lhs, UserProcess::ExecutableK
return lhs_int >= rhs_int;
}
-using UserProcessArray = Array<UserProcess, kSchedProcessLimitPerTeam>;
+using UserProcessArray = Array<UserProcess, kCPSProcessLimitPerTeam>;
using UserProcessRef = Ref<UserProcess>;
/// \brief Processs Team (contains multiple processes inside it.)
@@ -205,9 +206,9 @@ class UserProcessTeam final {
NE_COPY_DEFAULT(UserProcessTeam)
- Array<UserProcess, kSchedProcessLimitPerTeam>& AsArray();
- Ref<UserProcess>& AsRef();
- ProcessID& Id();
+ Array<UserProcess, kCPSProcessLimitPerTeam>& AsArray();
+ Ref<UserProcess>& AsRef();
+ ProcessID& Id();
public:
UserProcessArray mProcessList;
diff --git a/src/kernel/NeKit/Config.h b/src/kernel/NeKit/Config.h
index 02189b47..a855bf2a 100644
--- a/src/kernel/NeKit/Config.h
+++ b/src/kernel/NeKit/Config.h
@@ -8,8 +8,8 @@
#include <NeKit/Macros.h>
-#define NEKIT_VERSION_STR "0.0.2"
-#define NEKIT_VERSION_BCD 0x0002
+#define NEKIT_VERSION "0.0.3"
+#define NEKIT_VERSION_BCD 0x0003
#if __cplusplus < 202002L
#error !!! NeKernel compiles with C++20 as of December 4, 2025 !!!
@@ -17,7 +17,7 @@
#define NE_ICODEC \
final: \
- public \
+ public \
::Kernel::ICodec
/// @brief The **NeKernel** namespace.
@@ -113,12 +113,12 @@ inline Args&& move(Args&& arg) {
template <class Type>
concept IsSerializable = requires() {
- {Type::kValue};
+ { Type::kValue };
};
template <class Type>
concept IsNotSerializable = requires() {
- {!Type::kValue};
+ { !Type::kValue };
};
/// @brief Encoding interface, used as a proxy to convert T to Char*
diff --git a/src/kernel/NeKit/Macros.h b/src/kernel/NeKit/Macros.h
index 4fb3a736..361afbda 100644
--- a/src/kernel/NeKit/Macros.h
+++ b/src/kernel/NeKit/Macros.h
@@ -16,7 +16,7 @@
#endif
#ifndef kib_cast
-#define kib_cast(X) (Kernel::UInt64)((X) *1024)
+#define kib_cast(X) (Kernel::UInt64)((X) * 1024)
#endif
#ifndef MIB
@@ -117,7 +117,7 @@
#define NE_UNUSED(X) ((Kernel::Void) X)
#ifndef RGB
-#define RGB(R, G, B) ((Kernel::UInt32)((0xFF << 24) | ((R) << 16) | ((G) << 8) | (B)))
+#define RGB(R, G, B) ((Kernel::UInt32) ((0xFF << 24) | ((R) << 16) | ((G) << 8) | (B)))
#endif // !RGB
#ifdef __NE_AMD64__
diff --git a/src/kernel/NeKit/Utils.h b/src/kernel/NeKit/Utils.h
index 0ac5acc5..3f387c33 100644
--- a/src/kernel/NeKit/Utils.h
+++ b/src/kernel/NeKit/Utils.h
@@ -55,9 +55,9 @@ inline constexpr SizeT oe_string_len(const CharType* str) {
if (!str) return 0;
#if __cplusplus == 202302L
- if
- consteval { return ARRAY_SIZE(str); }
- else {
+ if consteval {
+ return ARRAY_SIZE(str);
+ } else {
SizeT len{0};
while (str[len] != 0) ++len;
return len;
diff --git a/src/kernel/NeKit/Vettable.h b/src/kernel/NeKit/Vettable.h
index 4cb1682d..a33a3ab3 100644
--- a/src/kernel/NeKit/Vettable.h
+++ b/src/kernel/NeKit/Vettable.h
@@ -16,14 +16,10 @@
namespace Kernel {
template <class Type>
-concept IsVettable = requires(Type) {
- (Type::kVettable);
-};
+concept IsVettable = requires(Type) { (Type::kVettable); };
template <class Type>
-concept IsUnVettable = requires(Type) {
- (Type::kUnvettable);
-};
+concept IsUnVettable = requires(Type) { (Type::kUnvettable); };
} // namespace Kernel
#endif // !__NE_KIT_VETTABLE_H__
diff --git a/src/kernel/amd64-ci.make b/src/kernel/amd64-ci.make
index dcb1c97e..71e350e5 100644
--- a/src/kernel/amd64-ci.make
+++ b/src/kernel/amd64-ci.make
@@ -5,7 +5,7 @@
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-ld
-CCFLAGS = -fshort-wchar -D__nekernel_dma_best_align=8 -D__nekernel_max_cores=8 -c -D__NE_AMD64__ -D__NEOSKRNL__ -D__NE_VEPM__ -Werror -Wall -Wpedantic -Wextra -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__NE_SUPPORT_NX__ -O0 -I../vendor -D__FSKIT_INCLUDES_NEFS__ -D__NEKERNEL__ -D__HAVE_NE_API__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../boot
+CCFLAGS = -fshort-wchar -D__nekernel_dma_best_align=8 -D__HALKIT_INCLUDES_BNID__=1 -D__nekernel_max_cores=8 -c -D__NE_AMD64__ -D__NEOSKRNL__ -D__NE_VEPM__ -Werror -Wall -Wpedantic -Wextra -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__NE_SUPPORT_NX__ -O0 -I../vendor -D__FSKIT_INCLUDES_NEFS__ -D__NEKERNEL__ -D__HAVE_NE_API__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../boot
ASM = nasm
diff --git a/src/kernel/amd64-desktop.make b/src/kernel/amd64-desktop.make
index 4afcdfd2..73bb2f43 100644
--- a/src/kernel/amd64-desktop.make
+++ b/src/kernel/amd64-desktop.make
@@ -5,7 +5,7 @@
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-ld
-CCFLAGS = -fshort-wchar -D__nekernel_dma_pool_start=0x1000000 -D__nekernel_dma_pool_size=0x1000000 \
+CCFLAGS = -fshort-wchar -D__nekernel_dma_pool_start=0x1000000 -D__HALKIT_INCLUDES_BNID__=1 -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__nekernel_dma_best_align=8 -D__FSKIT_INCLUDES_OPENHEFS__ -D__FSKIT_INCLUDES_EXT2__ -D__NE_SUPPORT_NX__ -O0 -I../vendor -D__NEKERNEL__ -D__HAVE_NE_API__ -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/ACPIFactoryInterface.cpp b/src/kernel/src/ACPIFactoryInterface.cpp
index 53f7b9e0..9aa4e26e 100644
--- a/src/kernel/src/ACPIFactoryInterface.cpp
+++ b/src/kernel/src/ACPIFactoryInterface.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <ArchKit/ArchKit.h>
#include <KernelKit/HeapMgr.h>
#include <NeKit/KString.h>
diff --git a/src/kernel/src/AsciiUtils.cpp b/src/kernel/src/AsciiUtils.cpp
index 83caa058..10b4c756 100644
--- a/src/kernel/src/AsciiUtils.cpp
+++ b/src/kernel/src/AsciiUtils.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <NeKit/Utils.h>
namespace Kernel {
@@ -105,9 +104,7 @@ Int32 rt_to_lower(Int ch) {
}
Int32 rt_is_alnum(Int ch) {
- return (ch >= 'a' && ch <= 'z') ||
- (ch >= 'A' && ch <= 'Z') ||
- (ch >= '0' && ch <= '9');
+ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9');
}
Boolean rt_is_space(Int ch) {
diff --git a/src/kernel/src/CodeMgr.cpp b/src/kernel/src/CodeMgr.cpp
index b02c6c27..e9eab8bd 100644
--- a/src/kernel/src/CodeMgr.cpp
+++ b/src/kernel/src/CodeMgr.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <KernelKit/CodeMgr.h>
#include <KernelKit/ProcessScheduler.h>
#include <NeKit/Utils.h>
@@ -30,7 +29,7 @@ BOOL rtl_create_kernel_task(KernelTask& task, const KID& kid) {
/***********************************************************************************/
ProcessID rtl_create_user_process(rtl_start_kind main, const Char* process_name) {
- if (!process_name || *process_name == 0) return kSchedInvalidPID;
+ if (!process_name || *process_name == 0) return kCPSInvalidPID;
return UserProcessScheduler::The().Spawn(process_name, reinterpret_cast<VoidPtr>(main), nullptr);
}
diff --git a/src/kernel/src/FS/Ext2+IFS.cpp b/src/kernel/src/FS/Ext2+IFS.cpp
index 30fb2f0d..4816119e 100644
--- a/src/kernel/src/FS/Ext2+IFS.cpp
+++ b/src/kernel/src/FS/Ext2+IFS.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#ifndef __NE_MINIMAL_OS__
#ifdef __FSKIT_INCLUDES_EXT2__
@@ -18,17 +17,18 @@
#include <NeKit/Utils.h>
/// @note There's no current maintainer of Ext2, the position is vacant.
-/// @note AMLALE: @0xf00sec has written this driver, and I @amlel-el-mahrouss is currently working on adding triple indirect indices.
+/// @note AMLALE: @0xf00sec has written this driver, and I @amlel-el-mahrouss is currently working
+/// on adding triple indirect indices.
/// @note AMLALE: This driver is too verbose, we need a complete overhaul of it.
-constexpr static UInt32 EXT2_DIRECT_BLOCKS = 12;
-constexpr static UInt32 EXT2_SINGLE_INDIRECT_INDEX = 12;
-constexpr static UInt32 EXT2_DOUBLE_INDIRECT_INDEX = 13;
-constexpr static UInt32 EXT2_TRIPLE_INDIRECT_INDEX = 14;
-constexpr static UInt32 EXT2_ROOT_INODE = 2;
-constexpr ATTRIBUTE(unused) static UInt32 EXT2_SUPERBLOCK_BLOCK = 1;
-constexpr static UInt32 EXT2_GROUP_DESC_BLOCK_SMALL = 2;
-constexpr static UInt32 EXT2_GROUP_DESC_BLOCK_LARGE = 1;
+constexpr static UInt32 EXT2_DIRECT_BLOCKS = 12;
+constexpr static UInt32 EXT2_SINGLE_INDIRECT_INDEX = 12;
+constexpr static UInt32 EXT2_DOUBLE_INDIRECT_INDEX = 13;
+constexpr static UInt32 EXT2_TRIPLE_INDIRECT_INDEX = 14;
+constexpr static UInt32 EXT2_ROOT_INODE = 2;
+constexpr ATTRIBUTE(unused) static UInt32 EXT2_SUPERBLOCK_BLOCK = 1;
+constexpr static UInt32 EXT2_GROUP_DESC_BLOCK_SMALL = 2;
+constexpr static UInt32 EXT2_GROUP_DESC_BLOCK_LARGE = 1;
namespace Detail {
static inline SizeT ext2_min(SizeT a, SizeT b) {
@@ -521,8 +521,8 @@ static ErrorOr<Void*> ext2_set_block_address(Ext2Context* ctx, Ext2Node* node,
mm_free_ptr(singlePtr);
return ErrorOr<Void*>(nullptr);
} else if (logicalBlockIndex < doubleStart + tripleSpan) {
- UInt32 tripleLba = ext2_block_to_lba(ctx, node->inode.fBlock[EXT2_TRIPLE_INDIRECT_INDEX]);
- auto triplePtrRef = ext2_read_block_ptr(ctx, node->inode.fBlock[EXT2_TRIPLE_INDIRECT_INDEX]);
+ UInt32 tripleLba = ext2_block_to_lba(ctx, node->inode.fBlock[EXT2_TRIPLE_INDIRECT_INDEX]);
+ auto triplePtrRef = ext2_read_block_ptr(ctx, node->inode.fBlock[EXT2_TRIPLE_INDIRECT_INDEX]);
if (triplePtrRef.HasError()) {
return ErrorOr<Void*>(kErrorDisk);
@@ -536,7 +536,6 @@ static ErrorOr<Void*> ext2_set_block_address(Ext2Context* ctx, Ext2Node* node,
mm_free_ptr(triplePtrRef.Leak().Leak());
}
-
return ErrorOr<Void*>(kErrorDisk);
}
diff --git a/src/kernel/src/FS/NeFS+FileMgr.cpp b/src/kernel/src/FS/NeFS+FileMgr.cpp
index e42bd519..a0cf4ad0 100644
--- a/src/kernel/src/FS/NeFS+FileMgr.cpp
+++ b/src/kernel/src/FS/NeFS+FileMgr.cpp
@@ -50,7 +50,7 @@ NodePtr NeFileSystemMgr::Create(_Input const Char* path) {
kout << "NeFS: Create called with null or empty path\n";
return nullptr;
}
-
+
return rtl_node_cast(mParser->CreateCatalog(path));
}
@@ -62,7 +62,7 @@ NodePtr NeFileSystemMgr::CreateDirectory(const Char* path) {
kout << "NeFS: CreateDirectory called with null or empty path\n";
return nullptr;
}
-
+
return rtl_node_cast(mParser->CreateCatalog(path, 0, kNeFSCatalogKindDir));
}
@@ -74,7 +74,7 @@ NodePtr NeFileSystemMgr::CreateAlias(const Char* path) {
kout << "NeFS: CreateAlias called with null or empty path\n";
return nullptr;
}
-
+
return rtl_node_cast(mParser->CreateCatalog(path, 0, kNeFSCatalogKindAlias));
}
@@ -119,12 +119,12 @@ _Output NodePtr NeFileSystemMgr::Open(_Input const Char* path, _Input const Char
kout << "NeFS: Open called with null or empty path\n";
return nullptr;
}
-
+
if (!r || *r == 0) {
kout << "NeFS: Open called with null or empty mode string\n";
return nullptr;
}
-
+
auto catalog = mParser->GetCatalog(path);
if (!catalog) {
kout << "NeFS: Open could not find catalog for path\n";
diff --git a/src/kernel/src/FS/OpenHeFS+FileMgr.cpp b/src/kernel/src/FS/OpenHeFS+FileMgr.cpp
index 551d69d1..a0a649eb 100644
--- a/src/kernel/src/FS/OpenHeFS+FileMgr.cpp
+++ b/src/kernel/src/FS/OpenHeFS+FileMgr.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#ifndef __NE_MINIMAL_OS__
#ifdef __FSKIT_INCLUDES_OPENHEFS__
@@ -74,9 +73,7 @@ NodePtr HeFileSystemMgr::Create(_Input const Char* path) {
err_local_get() = kErrorSuccess;
- if (auto node = mParser->CreateINode(&mDriveTrait, 0, nullptr, out, 0);
- node)
- return nullptr;
+ if (auto node = mParser->CreateINode(&mDriveTrait, 0, nullptr, out, 0); node) return nullptr;
kout << "OpenHeFS: ERROR: Check KPC.\r";
@@ -107,14 +104,12 @@ NodePtr HeFileSystemMgr::CreateDirectory(const Char* path) {
err_local_get() = kErrorSuccess;
- if (auto node = mParser->CreateINodeDirectory(&mDriveTrait, 0, out);
- node)
- return nullptr;
+ if (auto node = mParser->CreateINodeDirectory(&mDriveTrait, 0, out); node) return nullptr;
kout << "OpenHeFS: ERROR: Check KPC.\r";
- err_local_get() = kErrorDiskIsFull;
-
+ err_local_get() = kErrorDiskIsFull;
+
return nullptr;
}
@@ -126,7 +121,7 @@ NodePtr HeFileSystemMgr::CreateAlias(const Char* path) {
kout << "OpenHeFS: CreateAlias called with null or empty path\r";
return nullptr;
}
-
+
// TODO: It needs its own helper!
SizeT len = oe_string_len<Char>(path);
@@ -140,14 +135,15 @@ NodePtr HeFileSystemMgr::CreateAlias(const Char* path) {
err_local_get() = kErrorSuccess;
- if (auto node = mParser->CreateINode(&mDriveTrait, kOpenHeFSFileKindSymbolicLink, nullptr, out, 0);
- node)
+ if (auto node =
+ mParser->CreateINode(&mDriveTrait, kOpenHeFSFileKindSymbolicLink, nullptr, out, 0);
+ node)
return nullptr;
kout << "OpenHeFS: ERROR: Check KPC.\r";
- err_local_get() = kErrorDiskIsFull;
-
+ err_local_get() = kErrorDiskIsFull;
+
return nullptr;
}
@@ -221,14 +217,14 @@ _Output VoidPtr HeFileSystemMgr::Read(_Input NodePtr node, _Input Int32 flags, _
return nullptr;
}
- /// @note name is not used in OpenHeFS to mark data offsets. That's an NeFS-ism.
+/// @note name is not used in OpenHeFS to mark data offsets. That's an NeFS-ism.
Void HeFileSystemMgr::Write(_Input const Char* name, _Input NodePtr node, _Input VoidPtr data,
_Input Int32 flags, _Input SizeT size) {
NE_UNUSED(node);
- //NE_UNUSED(flags);
- //NE_UNUSED(size);
- //NE_UNUSED(name);
- //NE_UNUSED(data);
+ // NE_UNUSED(flags);
+ // NE_UNUSED(size);
+ // NE_UNUSED(name);
+ // NE_UNUSED(data);
if (!flags) return;
if (!size) return;
@@ -237,8 +233,8 @@ Void HeFileSystemMgr::Write(_Input const Char* name, _Input NodePtr node, _Input
static IMountpoint mnt;
io_construct_main_drive(mnt.A());
-
- mParser->INodeManip(&mnt.A(), (VoidPtr)data, size, u8"/", (Char8*)name, 0, NO);
+
+ mParser->INodeManip(&mnt.A(), (VoidPtr) data, size, u8"/", (Char8*) name, 0, NO);
}
_Output VoidPtr HeFileSystemMgr::Read(_Input const Char* name, _Input NodePtr node,
@@ -257,8 +253,8 @@ _Output VoidPtr HeFileSystemMgr::Read(_Input const Char* name, _Input NodePtr no
static IMountpoint mnt;
io_construct_main_drive(mnt.A());
- mParser->INodeManip(&mnt.A(), (VoidPtr)retBlob, sz, u8"/", (Char8*)name, 0, YES);
-
+ mParser->INodeManip(&mnt.A(), (VoidPtr) retBlob, sz, u8"/", (Char8*) name, 0, YES);
+
return retBlob;
}
@@ -273,7 +269,7 @@ _Output Bool HeFileSystemMgr::Seek(NodePtr node, SizeT off) {
_Output SizeT HeFileSystemMgr::Tell(NodePtr node) {
if (!node) return kFileMgrNPos;
SizeT pos = 0ULL;
-
+
return pos;
}
diff --git a/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp b/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp
index e03657f7..b923d13f 100644
--- a/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp
+++ b/src/kernel/src/FS/OpenHeFS+FileSystemParser.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#ifdef __FSKIT_INCLUDES_OPENHEFS__
#include <FSKit/OpenHeFS.h>
diff --git a/src/kernel/src/FileMgr.cpp b/src/kernel/src/FileMgr.cpp
index 4d109bf3..4dadf288 100644
--- a/src/kernel/src/FileMgr.cpp
+++ b/src/kernel/src/FileMgr.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <KernelKit/FileMgr.h>
#include <NeKit/Utils.h>
diff --git a/src/kernel/src/GUIDWizard.cpp b/src/kernel/src/GUIDWizard.cpp
index ad54d4bd..fd43d861 100644
--- a/src/kernel/src/GUIDWizard.cpp
+++ b/src/kernel/src/GUIDWizard.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <CFKit/GUIDWizard.h>
#include <NeKit/Ref.h>
diff --git a/src/kernel/src/Gfx/FBDeviceInterface.cpp b/src/kernel/src/Gfx/FBDeviceInterface.cpp
index 35688966..48bc1abd 100644
--- a/src/kernel/src/Gfx/FBDeviceInterface.cpp
+++ b/src/kernel/src/Gfx/FBDeviceInterface.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <GfxKit/FB.h>
using namespace Kernel;
diff --git a/src/kernel/src/HardwareThreadScheduler.cpp b/src/kernel/src/HardwareThreadScheduler.cpp
index b6c93b1b..77b8d67d 100644
--- a/src/kernel/src/HardwareThreadScheduler.cpp
+++ b/src/kernel/src/HardwareThreadScheduler.cpp
@@ -22,8 +22,6 @@ namespace Kernel {
EXTERN_C Bool hal_check_task(HAL::StackFramePtr frame);
EXTERN_C Bool mp_register_task(HAL::StackFramePtr frame, ProcessID pid);
-STATIC HardwareThreadScheduler kHardwareThreadScheduler;
-
///! A HardwareThread class takes care of it's owned hardware thread.
///! It has a stack for it's core.
@@ -126,6 +124,7 @@ HardwareThreadScheduler::~HardwareThreadScheduler() = default;
/// @brief Shared singleton function
/***********************************************************************************/
HardwareThreadScheduler& HardwareThreadScheduler::The() {
+ STATIC HardwareThreadScheduler kHardwareThreadScheduler;
return kHardwareThreadScheduler;
}
diff --git a/src/kernel/src/HeapMgr.cpp b/src/kernel/src/HeapMgr.cpp
index c22d6cdd..a7430824 100644
--- a/src/kernel/src/HeapMgr.cpp
+++ b/src/kernel/src/HeapMgr.cpp
@@ -3,15 +3,14 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <ArchKit/ArchKit.h>
#include <KernelKit/DebugOutput.h>
#include <KernelKit/HeapMgr.h>
#include <KernelKit/KPC.h>
+#include <KernelKit/LockDelegate.h>
#include <NeKit/Crc32.h>
#include <NeKit/PageMgr.h>
#include <NeKit/Utils.h>
-#include <KernelKit/LockDelegate.h>
/* ========================================
@@ -85,7 +84,7 @@ STATIC PageMgr kPageMgr;
/// @param user User enable bit.
/// @return The newly allocated pointer.
_Output VoidPtr mm_alloc_ptr(SizeT sz, Bool wr, Bool user, SizeT pad_amount) {
- static Bool locked = false;
+ static Bool locked = false;
LockDelegate<255> lock{&locked};
auto sz_fix = sz;
@@ -134,7 +133,7 @@ _Output VoidPtr mm_alloc_ptr(SizeT sz, Bool wr, Bool user, SizeT pad_amount) {
/// @brief Controls the page's heap.
/// @param heap_ptr the pointer to make a page heap.
/// @return kErrorSuccess if successful, otherwise an error code.
- _Output Int32 mm_ctl_page(VoidPtr heap_ptr, const Bool enable) {
+_Output Int32 mm_ctl_page(VoidPtr heap_ptr, const Bool enable) {
if (Detail::mm_check_ptr_address(heap_ptr) == No) return kErrorHeapNotPresent;
Detail::MM_INFORMATION_BLOCK_PTR heap_info_ptr =
diff --git a/src/kernel/src/InitializerList.cpp b/src/kernel/src/InitializerList.cpp
index 42e3db6a..fada5851 100644
--- a/src/kernel/src/InitializerList.cpp
+++ b/src/kernel/src/InitializerList.cpp
@@ -3,5 +3,4 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <NeKit/InitializerList.h>
diff --git a/src/kernel/src/KernelTask.cpp b/src/kernel/src/KernelTask.cpp
index e733d64a..e73dce21 100644
--- a/src/kernel/src/KernelTask.cpp
+++ b/src/kernel/src/KernelTask.cpp
@@ -3,9 +3,8 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
-#include <KernelKit/KernelTask.h>
#include <KernelKit/CodeMgr.h>
+#include <KernelKit/KernelTask.h>
/***********************************************************************************/
/// @file KernelTaskScheduler.cc
@@ -14,15 +13,15 @@
/***********************************************************************************/
namespace Kernel {
-
+
/// @internal @brief Calls the DDK stub to initialize the stack_frame of the driver.
EXTERN_C Int32 kt_kernel_task_start(HAL::StackFramePtr stack_frame, VoidPtr code) {
MUST_PASS(stack_frame && code);
- ((rtl_kstart_kind)(code))(stack_frame);
+ ((rtl_kstart_kind) (code))(stack_frame);
return stack_frame->R8;
}
-
+
Bool KernelTaskHelper::Start(KernelTask& task_ptr, const KID& kid) {
if (!kid) return NO;
diff --git a/src/kernel/src/PE32CodeMgr.cpp b/src/kernel/src/PE32CodeMgr.cpp
index fbb761e4..375725ee 100644
--- a/src/kernel/src/PE32CodeMgr.cpp
+++ b/src/kernel/src/PE32CodeMgr.cpp
@@ -237,18 +237,18 @@ ErrorOr<VoidPtr> PE32Loader::GetBlob() {
namespace Utils {
ProcessID rtl_create_user_process(PE32Loader& exec,
const UserProcess::ExecutableKind& process_kind) {
- if (!exec.IsLoaded()) return kSchedInvalidPID;
+ if (!exec.IsLoaded()) return kCPSInvalidPID;
ErrorOrAny errOrStart = exec.FindStart();
- if (errOrStart.Error() != kErrorSuccess) return kSchedInvalidPID;
+ if (errOrStart.Error() != kErrorSuccess) return kCPSInvalidPID;
ErrorOrAny symname = exec.FindSymbol(kPeNameSymbol, 0);
if (!symname.Leak().Leak())
symname = ErrorOr<VoidPtr>{(VoidPtr) rt_alloc_string(kPeImageStart)};
- if (!symname.Leak().Leak()) return kSchedInvalidPID;
+ if (!symname.Leak().Leak()) return kCPSInvalidPID;
ProcessID id =
UserProcessScheduler::The().Spawn(reinterpret_cast<const Char*>(symname.Leak().Leak()),
@@ -256,21 +256,21 @@ namespace Utils {
mm_free_ptr(symname.Leak().Leak());
- if (id != kSchedInvalidPID) {
+ if (id != kCPSInvalidPID) {
auto stacksym = exec.FindSymbol(kPeStackSizeSymbol, 0);
if (!stacksym.Leak().Leak()) {
- stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(kSchedMaxStackSz)};
+ stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(kCPSMaxStackSz)};
}
if (!stacksym.Leak().Leak()) {
UserProcessScheduler::The().Remove(id);
mm_free_ptr(stacksym.Leak().Leak());
- return kSchedInvalidPID;
+ return kCPSInvalidPID;
}
- if ((*(volatile UIntPtr*) stacksym.Leak().Leak()) > kSchedMaxStackSz) {
- *(volatile UIntPtr*) stacksym.Leak().Leak() = kSchedMaxStackSz;
+ if ((*(volatile UIntPtr*) stacksym.Leak().Leak()) > kCPSMaxStackSz) {
+ *(volatile UIntPtr*) stacksym.Leak().Leak() = kCPSMaxStackSz;
}
UserProcessScheduler::The().TheCurrentTeam().Leak().AsArray()[id].Kind = process_kind;
diff --git a/src/kernel/src/PEFCodeMgr.cpp b/src/kernel/src/PEFCodeMgr.cpp
index 8f2225a4..3b03c81f 100644
--- a/src/kernel/src/PEFCodeMgr.cpp
+++ b/src/kernel/src/PEFCodeMgr.cpp
@@ -301,17 +301,17 @@ ErrorOr<VoidPtr> PEFLoader::GetBlob() {
ProcessID rtl_create_user_process(PEFLoader& exec,
const UserProcess::ExecutableKind& process_kind) {
- if (!exec.IsLoaded()) return kSchedInvalidPID;
+ if (!exec.IsLoaded()) return kCPSInvalidPID;
auto errOrStart = exec.FindStart();
- if (errOrStart.Error() != kErrorSuccess) return kSchedInvalidPID;
+ if (errOrStart.Error() != kErrorSuccess) return kCPSInvalidPID;
auto symname = exec.FindSymbol(kPefNameSymbol, kPefCode);
if (!symname.Leak().Leak()) symname = ErrorOr<VoidPtr>{(VoidPtr) rt_alloc_string(kPefImageStart)};
- if (!symname.Leak().Leak()) return kSchedInvalidPID;
+ if (!symname.Leak().Leak()) return kCPSInvalidPID;
ProcessID id =
UserProcessScheduler::The().Spawn(reinterpret_cast<const Char*>(symname.Leak().Leak()),
@@ -319,21 +319,21 @@ ProcessID rtl_create_user_process(PEFLoader& exec,
if (symname.Leak().Leak()) mm_free_ptr(symname.Leak().Leak());
- if (id != kSchedInvalidPID) {
+ if (id != kCPSInvalidPID) {
auto stacksym = exec.FindSymbol(kPefStackSizeSymbol, kPefData);
if (!stacksym.Leak().Leak()) {
- stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(kSchedMaxStackSz)};
+ stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(kCPSMaxStackSz)};
}
if (!stacksym.Leak().Leak()) {
UserProcessScheduler::The().Remove(id);
mm_free_ptr(stacksym.Leak().Leak());
- return kSchedInvalidPID;
+ return kCPSInvalidPID;
}
- if ((*(volatile UIntPtr*) stacksym.Leak().Leak()) > kSchedMaxStackSz) {
- *(volatile UIntPtr*) stacksym.Leak().Leak() = kSchedMaxStackSz;
+ if ((*(volatile UIntPtr*) stacksym.Leak().Leak()) > kCPSMaxStackSz) {
+ *(volatile UIntPtr*) stacksym.Leak().Leak() = kCPSMaxStackSz;
}
UserProcessScheduler::The().TheCurrentTeam().Leak().AsArray()[id].Kind = process_kind;
diff --git a/src/kernel/src/Semaphore.cpp b/src/kernel/src/Semaphore.cpp
index c353c223..8516e462 100644
--- a/src/kernel/src/Semaphore.cpp
+++ b/src/kernel/src/Semaphore.cpp
@@ -3,6 +3,4 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <KernelKit/Semaphore.h>
-
diff --git a/src/kernel/src/Storage/AHCIDeviceInterface.cpp b/src/kernel/src/Storage/AHCIDeviceInterface.cpp
index 3e47ef45..3a48cadc 100644
--- a/src/kernel/src/Storage/AHCIDeviceInterface.cpp
+++ b/src/kernel/src/Storage/AHCIDeviceInterface.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <StorageKit/AHCI.h>
namespace Kernel {
diff --git a/src/kernel/src/Swap/DiskSwap.cpp b/src/kernel/src/Swap/DiskSwap.cpp
index 94991d20..b7733870 100644
--- a/src/kernel/src/Swap/DiskSwap.cpp
+++ b/src/kernel/src/Swap/DiskSwap.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <KernelKit/FileMgr.h>
#include <SwapKit/DiskSwap.h>
diff --git a/src/kernel/src/UserMgr.cpp b/src/kernel/src/UserMgr.cpp
index 264dcc5f..358a96c2 100644
--- a/src/kernel/src/UserMgr.cpp
+++ b/src/kernel/src/UserMgr.cpp
@@ -16,7 +16,8 @@
/// @brief Multi-user support.
namespace Kernel {
-
-
-
-}
+namespace Detail {
+ struct UserPermissionControl;
+ struct UserPermissionElevator;
+} // namespace Detail
+} // namespace Kernel
diff --git a/src/kernel/src/UserProcessScheduler.cpp b/src/kernel/src/UserProcessScheduler.cpp
index c0b166cb..4b8d788b 100644
--- a/src/kernel/src/UserProcessScheduler.cpp
+++ b/src/kernel/src/UserProcessScheduler.cpp
@@ -3,7 +3,6 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <ArchKit/ArchKit.h>
#include <KernelKit/HardwareThreadScheduler.h>
#include <KernelKit/HeapMgr.h>
@@ -103,7 +102,7 @@ STATIC T* sched_try_go_upper_ptr_tree(T* tree) {
/***********************************************************************************/
ErrorOr<VoidPtr> UserProcess::New(SizeT sz, SizeT pad_amount) {
- if (this->UsedMemory > kSchedMaxMemoryLimit) return ErrorOr<VoidPtr>(-kErrorHeapOutOfMemory);
+ if (this->UsedMemory > kCPSMaxMemoryLimit) return ErrorOr<VoidPtr>(-kErrorHeapOutOfMemory);
#ifdef __NE_VIRTUAL_MEMORY_SUPPORT__
auto vm_register = kKernelVM;
@@ -348,7 +347,7 @@ ProcessID UserProcessScheduler::Spawn(const Char* name, VoidPtr code, VoidPtr im
ProcessID pid = this->mTeam.mProcessCur;
- if (pid > kSchedProcessLimitPerTeam) {
+ if (pid > kCPSProcessLimitPerTeam) {
return -kErrorProcessFault;
}
@@ -361,12 +360,12 @@ ProcessID UserProcessScheduler::Spawn(const Char* name, VoidPtr code, VoidPtr im
SizeT len = rt_string_len(name);
- if (len > kSchedNameLen) {
+ if (len > kCPSNameLen) {
return -kErrorProcessFault;
}
rt_copy_memory_safe(reinterpret_cast<VoidPtr>(const_cast<Char*>(name)), process.Name, len,
- kSchedNameLen);
+ kCPSNameLen);
#ifdef __NE_VIRTUAL_MEMORY_SUPPORT__
process.VMRegister = kKernelVM;
@@ -395,7 +394,7 @@ ProcessID UserProcessScheduler::Spawn(const Char* name, VoidPtr code, VoidPtr im
HAL::kMMFlagsUser | HAL::kMMFlagsPresent);
#endif // ifdef __NE_VIRTUAL_MEMORY_SUPPORT__
- process.StackSize = kSchedMaxStackSz;
+ process.StackSize = kCPSMaxStackSz;
rt_set_memory(process.StackReserve, 0, process.StackSize);
@@ -430,8 +429,8 @@ ProcessID UserProcessScheduler::Spawn(const Char* name, VoidPtr code, VoidPtr im
/***********************************************************************************/
UserProcessScheduler& UserProcessScheduler::The() {
- STATIC UserProcessScheduler kScheduler;
- return kScheduler;
+ STATIC UserProcessScheduler kUserScheduler;
+ return kUserScheduler;
}
/***********************************************************************************/
@@ -444,7 +443,7 @@ UserProcessScheduler& UserProcessScheduler::The() {
/***********************************************************************************/
Void UserProcessScheduler::Remove(ProcessID process_id) {
- if (process_id < 0 || process_id > kSchedProcessLimitPerTeam) return;
+ if (process_id < 0 || process_id > kCPSProcessLimitPerTeam) return;
if (this->mTeam.mProcessList[process_id].Status == ProcessStatusKind::kInvalid) return;
mTeam.mProcessList[process_id].Exit(kErrorSuccess);
@@ -567,7 +566,7 @@ Bool UserProcessHelper::CanBeScheduled(const UserProcess& process) {
if (process.Status != ProcessStatusKind::kRunning) return No;
if (process.Affinity == AffinityKind::kInvalid) return No;
- if (process.StackSize > kSchedMaxStackSz) return No;
+ if (process.StackSize > kCPSMaxStackSz) return No;
if (!process.Name[0]) return No;
if (process.Signal.SignalID == sig_generate_unique<SIGTRAP>()) return No;
diff --git a/src/kernel/src/UserProcessTeam.cpp b/src/kernel/src/UserProcessTeam.cpp
index fe598795..293fd45a 100644
--- a/src/kernel/src/UserProcessTeam.cpp
+++ b/src/kernel/src/UserProcessTeam.cpp
@@ -24,7 +24,7 @@ UserProcessTeam::UserProcessTeam() {
/// @return The list of process to schedule.
/***********************************************************************************/
-Array<UserProcess, kSchedProcessLimitPerTeam>& UserProcessTeam::AsArray() {
+Array<UserProcess, kCPSProcessLimitPerTeam>& UserProcessTeam::AsArray() {
return this->mProcessList;
}
diff --git a/src/kernel/src/ZXDCodeMgr.cpp b/src/kernel/src/ZXDCodeMgr.cpp
index 59abc3c3..29599b1e 100644
--- a/src/kernel/src/ZXDCodeMgr.cpp
+++ b/src/kernel/src/ZXDCodeMgr.cpp
@@ -3,8 +3,5 @@
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
-
#include <KernelKit/CodeMgr.h>
#include <KernelKit/ZXD.h>
-
-