summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-11 17:52:52 +0200
committerGitHub <noreply@github.com>2025-04-11 17:52:52 +0200
commitc1d9fbd3925d6e10919a7793fc214c9f1a01b2ab (patch)
treea74bdf6f87d07a24496effbc157f74d379d25007 /dev/kernel
parent8988b6f166d1087615b21229df651e0bcc0fa048 (diff)
parentc3856eddb5a8146751dac82ad1ba4433f5ca6d6d (diff)
Merge pull request #14 from amlel-el-mahrouss/dev
tweak kernel, boot: use -Wall, -Werror, -Wpedantic now
Diffstat (limited to 'dev/kernel')
-rw-r--r--dev/kernel/CFKit/GUIDWrapper.h12
-rw-r--r--dev/kernel/FSKit/NeFS.h8
-rw-r--r--dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h8
-rw-r--r--dev/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc7
-rw-r--r--dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc46
-rw-r--r--dev/kernel/HALKit/AMD64/HalDebugOutput.cc10
-rw-r--r--dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc41
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelMain.cc4
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelPanic.cc17
-rw-r--r--dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc90
-rw-r--r--dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc3
-rw-r--r--dev/kernel/HALKit/AMD64/HalTimerAMD64.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/PCI/DMA.cc10
-rw-r--r--dev/kernel/HALKit/AMD64/Paging.h29
-rw-r--r--dev/kernel/HALKit/AMD64/Processor.h11
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc19
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc5
-rw-r--r--dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/HalKernelPanic.cc4
-rw-r--r--dev/kernel/KernelKit/CodeMgr.h2
-rw-r--r--dev/kernel/KernelKit/DebugOutput.h17
-rw-r--r--dev/kernel/KernelKit/DeviceMgr.h6
-rw-r--r--dev/kernel/KernelKit/FileMgr.h10
-rw-r--r--dev/kernel/KernelKit/HardwareThreadScheduler.h8
-rw-r--r--dev/kernel/KernelKit/MemoryMgr.h2
-rw-r--r--dev/kernel/KernelKit/PCI/DMA.h6
-rw-r--r--dev/kernel/KernelKit/PCI/DMA.inl2
-rw-r--r--dev/kernel/KernelKit/ProcessScheduler.h22
-rw-r--r--dev/kernel/KernelKit/ThreadLocalStorage.inl2
-rw-r--r--dev/kernel/KernelKit/Timer.h4
-rw-r--r--dev/kernel/KernelKit/UserProcessScheduler.inl (renamed from dev/kernel/KernelKit/ProcessScheduler.inl)2
-rw-r--r--dev/kernel/NewKit/Array.h6
-rw-r--r--dev/kernel/NewKit/ArrayList.h2
-rw-r--r--dev/kernel/NewKit/CxxAbi.h2
-rw-r--r--dev/kernel/NewKit/Defines.h9
-rw-r--r--dev/kernel/NewKit/Json.h2
-rw-r--r--dev/kernel/NewKit/KString.h2
-rw-r--r--dev/kernel/NewKit/KernelPanic.h3
-rw-r--r--dev/kernel/NewKit/MutableArray.h6
-rw-r--r--dev/kernel/NewKit/PageMgr.h2
-rw-r--r--dev/kernel/NewKit/Ref.h3
-rw-r--r--dev/kernel/NewKit/Utils.h2
-rw-r--r--dev/kernel/SwapKit/DiskSwap.h6
-rw-r--r--dev/kernel/amd64-ci.make10
-rw-r--r--dev/kernel/amd64-desktop.make10
-rw-r--r--dev/kernel/arm64-desktop.make8
-rw-r--r--dev/kernel/src/ACPIFactoryInterface.cc16
-rw-r--r--dev/kernel/src/BitMapMgr.cc29
-rw-r--r--dev/kernel/src/CxxAbi-AMD64.cc14
-rw-r--r--dev/kernel/src/DriveMgr.cc4
-rw-r--r--dev/kernel/src/FS/NeFS+FileMgr.cc4
-rw-r--r--dev/kernel/src/FS/NeFS.cc77
-rw-r--r--dev/kernel/src/GUIDWizard.cc28
-rw-r--r--dev/kernel/src/HardwareThreadScheduler.cc4
-rw-r--r--dev/kernel/src/IndexableProperty.cc2
-rw-r--r--dev/kernel/src/KString.cc2
-rw-r--r--dev/kernel/src/KernelProcessScheduler.cc6
-rw-r--r--dev/kernel/src/MemoryMgr.cc10
-rw-r--r--dev/kernel/src/New+Delete.cc10
-rw-r--r--dev/kernel/src/PEFCodeMgr.cc2
-rw-r--r--dev/kernel/src/PageMgr.cc2
-rw-r--r--dev/kernel/src/SoftwareTimer.cc2
-rw-r--r--dev/kernel/src/Swap/DiskSwap.cc4
-rw-r--r--dev/kernel/src/ThreadLocalStorage.cc2
-rw-r--r--dev/kernel/src/User.cc4
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc38
-rw-r--r--dev/kernel/src/Utils.cc4
68 files changed, 363 insertions, 387 deletions
diff --git a/dev/kernel/CFKit/GUIDWrapper.h b/dev/kernel/CFKit/GUIDWrapper.h
index e58fcc69..c8143cea 100644
--- a/dev/kernel/CFKit/GUIDWrapper.h
+++ b/dev/kernel/CFKit/GUIDWrapper.h
@@ -20,18 +20,18 @@ namespace CF::XRN
using namespace Kernel;
union GUIDSequence {
- alignas(8) UShort u8[16];
- alignas(8) UShort u16[8];
- alignas(8) UInt u32[4];
- alignas(8) ULong u64[2];
+ alignas(8) UShort fU8[16];
+ alignas(8) UShort fU16[8];
+ alignas(8) UInt fU32[4];
+ alignas(8) ULong fU64[2];
- struct
+ struct GUID
{
alignas(8) UInt fMs1;
UShort fMs2;
UShort fMs3;
UChar fMs4[8];
- };
+ } fUuid;
};
class GUID final
diff --git a/dev/kernel/FSKit/NeFS.h b/dev/kernel/FSKit/NeFS.h
index 87585a42..40ec84da 100644
--- a/dev/kernel/FSKit/NeFS.h
+++ b/dev/kernel/FSKit/NeFS.h
@@ -336,8 +336,8 @@ namespace Kernel
public:
STATIC const Char* Root();
STATIC const Char* UpDir();
- STATIC const Char Separator();
- STATIC const Char MetaFile();
+ STATIC Char Separator();
+ STATIC Char MetaFile();
};
/// @brief Journal class for NeFS.
@@ -355,7 +355,7 @@ namespace Kernel
return;
}
- kout << "Info: Journal stamp: " << stamp << kendl;
+ (void)(kout << "Info: Journal stamp: " << stamp << kendl);
rt_copy_memory((VoidPtr)stamp, this->mStamp, rt_string_len(stamp));
}
@@ -427,7 +427,7 @@ namespace Kernel
if (!parser->CreateFork(new_fork))
return NO;
- kout << "XML Commited: " << xml_data << "\r\nTo Journal Fork: " << journal_name << kendl;
+ (void)(kout << "XML Commited: " << xml_data << "\r\nTo Journal Fork: " << journal_name << kendl);
auto ret = parser->WriteCatalog(new_fork.CatalogName, YES, xml_data, rt_string_len(xml_data), new_fork.ForkName);
diff --git a/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h b/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h
index d2711025..f5470877 100644
--- a/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h
+++ b/dev/kernel/FirmwareKit/CoreBoot/CoreBoot.h
@@ -24,13 +24,13 @@ namespace Firmware::Detail::CoreBoot
const UInt32 fStartAddress; // start address (master/slave(s) thread)
#ifdef NE_IS_EXTENDED_COREBOOT
- const UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such. (ARM)
- const UIntPtr fMasterStructureVersion; // master structure version.
+ UIntPtr fMasterStructure; // master structure for MP/PM and device tree and such. (ARM)
+ UIntPtr fMasterStructureVersion; // master structure version.
#endif
#ifdef NE_IS_MBCI_COREBOOT
- const UIntPtr fMBCIStructure; // MBCI structure for MBCI (ARM)
- const UIntPtr fMBCIStructureVersion; // MBCI structure version.
+ UIntPtr fMBCIStructure; // MBCI structure for MBCI (ARM)
+ UIntPtr fMBCIStructureVersion; // MBCI structure version.
#endif
};
} // namespace Firmware::Detail::CoreBoot
diff --git a/dev/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc b/dev/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc
index 711fc78a..2430da07 100644
--- a/dev/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc
+++ b/dev/kernel/HALKit/AMD64/HalACPIFactoryInterface.cc
@@ -89,7 +89,6 @@ namespace Kernel
Bool ACPIFactoryInterface::Shutdown()
{
- failed_to_shutdown:
return NO;
}
@@ -97,7 +96,6 @@ namespace Kernel
/// @return nothing it's a reboot.
Void ACPIFactoryInterface::Reboot()
{
- failed_to_reboot:
asm volatile(".intel_syntax noprefix; "
"rt_reset_hardware:; "
"cli; "
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index c7e639e4..43888f3b 100644
--- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -103,7 +103,7 @@ namespace Kernel::HAL
UInt32 AcpiID;
} LApic;
};
- } List[]; // Records List
+ } List[1]; // Records List
};
///////////////////////////////////////////////////////////////////////////////////////
@@ -215,7 +215,6 @@ namespace Kernel::HAL
kSMPInterrupt = 0;
kSMPCount = 0;
- UInt32 eax, edx;
kout << "SMP: Starting APs...\r";
kApicBaseAddress = kMADTBlock->Address;
@@ -242,7 +241,7 @@ namespace Kernel::HAL
break;
kAPICLocales[kSMPCount] = kMADTBlock->List[kSMPCount].LAPIC.ProcessorID;
- kout << "SMP: APIC ID: " << number(kAPICLocales[kSMPCount]) << kendl;
+ (void)(kout << "SMP: APIC ID: " << number(kAPICLocales[kSMPCount]) << kendl);
// I'll just make the AP start from scratch here.
@@ -265,7 +264,7 @@ namespace Kernel::HAL
++index;
}
- kout << "SMP: number of APs: " << number(kSMPCount) << kendl;
+ (void)(kout << "SMP: number of APs: " << number(kSMPCount) << kendl);
// Kernel is now SMP aware.
// That means that the scheduler is now available (on MP Kernels)
diff --git a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
index 7de5bb0b..7209fd06 100644
--- a/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc
@@ -22,13 +22,13 @@ EXTERN_C void idt_handle_gpf(Kernel::UIntPtr rsp)
kIsScheduling = NO;
- kout << "Kernel: General Protection Fault.\r";
+ Kernel::kout << "Kernel: General Protection Fault.\r";
process.Leak().ProcessSignal.SignalArg = rsp;
process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
- kout << "Kernel: SIGKILL status.\r";
+ Kernel::kout << "Kernel: SIGKILL status.\r";
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
@@ -46,8 +46,8 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp)
kIsScheduling = NO;
- kout << "Kernel: Page Fault.\r";
- kout << "Kernel: SIGKILL\r";
+ Kernel::kout << "Kernel: Page Fault.\r";
+ Kernel::kout << "Kernel: SIGKILL\r";
process.Leak().ProcessSignal.SignalArg = rsp;
process.Leak().ProcessSignal.SignalID = SIGKILL;
@@ -66,6 +66,8 @@ namespace Kernel::Detail
/// @brief Handle scheduler interrupt.
EXTERN_C void idt_handle_scheduler(Kernel::UIntPtr rsp)
{
+ NE_UNUSED(rsp);
+
static Kernel::Int64 try_count_before_brute = Kernel::Detail::kTimeoutCount;
while (kIsScheduling)
@@ -95,13 +97,13 @@ EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp)
kIsScheduling = NO;
- kout << "Kernel: Math error (division by zero?).\r";
+ Kernel::kout << "Kernel: Math error (division by zero?).\r";
process.Leak().ProcessSignal.SignalArg = rsp;
process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
- kout << "Kernel: SIGKILL status.\r";
+ Kernel::kout << "Kernel: SIGKILL status.\r";
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
@@ -119,13 +121,13 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp)
kIsScheduling = NO;
- kout << "Kernel: Generic Process Fault.\r";
+ Kernel::kout << "Kernel: Generic Process Fault.\r";
process.Leak().ProcessSignal.SignalArg = rsp;
process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
- kout << "Kernel: SIGKILL status.\r";
+ Kernel::kout << "Kernel: SIGKILL status.\r";
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
@@ -138,7 +140,7 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip)
if (process.Leak().Status != Kernel::ProcessStatusKind::kRunning)
{
- kout << "Kernel: SIGTRAP\r";
+ Kernel::kout << "Kernel: SIGTRAP\r";
while (YES)
;
@@ -146,15 +148,15 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip)
kIsScheduling = NO;
- kout << "Kernel: Process RIP: " << Kernel::hex_number(rip) << kendl;
- kout << "Kernel: SIGTRAP\r";
+ (void)(Kernel::kout << "Kernel: Process RIP: " << Kernel::hex_number(rip) << Kernel::kendl);
+ Kernel::kout << "Kernel: SIGTRAP\r";
process.Leak().ProcessSignal.SignalArg = rip;
process.Leak().ProcessSignal.SignalID = SIGTRAP;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
- kout << "Kernel: SIGTRAP status.\r";
+ Kernel::kout << "Kernel: SIGTRAP status.\r";
process.Leak().Status = Kernel::ProcessStatusKind::kFrozen;
}
@@ -170,13 +172,13 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp)
kIsScheduling = NO;
- kout << "Kernel: Undefined Opcode.\r";
+ Kernel::kout << "Kernel: Undefined Opcode.\r";
process.Leak().ProcessSignal.SignalArg = rsp;
process.Leak().ProcessSignal.SignalID = SIGKILL;
process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status;
- kout << "Kernel: SIGKILL status.\r";
+ Kernel::kout << "Kernel: SIGKILL status.\r";
process.Leak().Status = Kernel::ProcessStatusKind::kKilled;
@@ -190,7 +192,7 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx_syscall_index, K
{
if (rcx_syscall_index < kSyscalls.Count())
{
- kout << "syscall: Enter Syscall.\r";
+ Kernel::kout << "syscall: Enter Syscall.\r";
if (kSyscalls[rcx_syscall_index].fHooked)
{
@@ -200,15 +202,15 @@ EXTERN_C Kernel::Void hal_system_call_enter(Kernel::UIntPtr rcx_syscall_index, K
}
else
{
- kout << "syscall: syscall isn't valid at all! (is nullptr)\r";
+ Kernel::kout << "syscall: syscall isn't valid at all! (is nullptr)\r";
}
}
else
{
- kout << "syscall: syscall isn't hooked at all! (is set to false)\r";
+ Kernel::kout << "syscall: syscall isn't hooked at all! (is set to false)\r";
}
- kout << "syscall: Exit Syscall.\r";
+ Kernel::kout << "syscall: Exit Syscall.\r";
}
}
@@ -219,7 +221,7 @@ EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx_kerncall_index,
{
if (rcx_kerncall_index < kKerncalls.Count())
{
- kout << "kerncall: Enter Kernel Call List.\r";
+ Kernel::kout << "kerncall: Enter Kernel Call List.\r";
if (kKerncalls[rcx_kerncall_index].fHooked)
{
@@ -229,14 +231,14 @@ EXTERN_C Kernel::Void hal_kernel_call_enter(Kernel::UIntPtr rcx_kerncall_index,
}
else
{
- kout << "kerncall: Kernel call isn't valid at all! (is nullptr)\r";
+ Kernel::kout << "kerncall: Kernel call isn't valid at all! (is nullptr)\r";
}
}
else
{
- kout << "kerncall: Kernel call isn't hooked at all! (is set to false)\r";
+ Kernel::kout << "kerncall: Kernel call isn't hooked at all! (is set to false)\r";
}
- kout << "kerncall: Exit Kernel Call List.\r";
+ Kernel::kout << "kerncall: Exit Kernel Call List.\r";
}
}
diff --git a/dev/kernel/HALKit/AMD64/HalDebugOutput.cc b/dev/kernel/HALKit/AMD64/HalDebugOutput.cc
index e79b6b09..0ee7eef0 100644
--- a/dev/kernel/HALKit/AMD64/HalDebugOutput.cc
+++ b/dev/kernel/HALKit/AMD64/HalDebugOutput.cc
@@ -65,6 +65,8 @@ namespace Kernel
EXTERN_C void ke_io_write(IDeviceObject<const Char*>* obj, const Char* bytes)
{
+ NE_UNUSED(obj);
+
#ifdef __DEBUG__
Detail::hal_serial_init<Detail::kPort>();
@@ -82,7 +84,7 @@ namespace Kernel
index = 0;
len = rt_string_len(bytes, 256U);
- static int x = kFontSizeX, y = kFontSizeY;
+ static SizeT x = kFontSizeX, y = kFontSizeY;
static BOOL not_important = YES;
@@ -123,12 +125,8 @@ namespace Kernel
{
y = kFontSizeY;
- fb_init();
-
FBDrawInRegion(fb_get_clear_clr(), FB::FBAccessibilty::Height(), FB::FBAccessibilty::Width(),
0, 0);
-
- fb_clear();
}
++index;
@@ -183,7 +181,7 @@ namespace Kernel
TerminalDevice TerminalDevice::The() noexcept
{
- TerminalDevice out(Kernel::ke_io_write, Kernel::ke_io_read);
+ static TerminalDevice out(Kernel::ke_io_write, Kernel::ke_io_read);
return out;
}
diff --git a/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc b/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc
index 96276964..ddfc49b6 100644
--- a/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc
+++ b/dev/kernel/HALKit/AMD64/HalDescriptorLoader.cc
@@ -17,26 +17,8 @@ namespace Kernel::HAL
STATIC ::Kernel::Detail::AMD64::InterruptDescriptorAMD64
kInterruptVectorTable[kKernelIdtSize] = {};
- STATIC void hal_set_irq_mask(UInt8 irql);
- STATIC void hal_clear_irq_mask(UInt8 irql);
-
- STATIC Void hal_enable_pit(UInt16 ticks) noexcept
- {
- if (ticks == 0)
- ticks = kPITDefaultTicks;
-
- // Configure PIT to receieve scheduler interrupts.
-
- UInt16 kPITCommDivisor = kPITFrequency / ticks; // 100 Hz.
-
- HAL::rt_out8(kPITControlPort, 0x36); // Command to PIT
- HAL::rt_out8(kPITChannel0Port, kPITCommDivisor & 0xFF); // Send low byte
- HAL::rt_out8(kPITChannel0Port, (kPITCommDivisor >> 8) & 0xFF); // Send high byte
-
- hal_clear_irq_mask(32);
- }
-
- STATIC void hal_set_irq_mask(UInt8 irql)
+#if 0
+ STATIC void hal_set_irq_mask(UInt8 irql) [[maybe_unused]]
{
UInt16 port;
UInt8 value;
@@ -54,8 +36,9 @@ namespace Kernel::HAL
value = rt_in8(port) | (1 << irql);
rt_out8(port, value);
}
+#endif // make gcc shut up
- STATIC void hal_clear_irq_mask(UInt8 irql)
+ STATIC void hal_clear_irq_mask(UInt8 irql) [[maybe_unused]]
{
UInt16 port;
UInt8 value;
@@ -73,6 +56,22 @@ namespace Kernel::HAL
value = rt_in8(port) & ~(1 << irql);
rt_out8(port, value);
}
+
+ STATIC Void hal_enable_pit(UInt16 ticks) noexcept
+ {
+ if (ticks == 0)
+ ticks = kPITDefaultTicks;
+
+ // Configure PIT to receieve scheduler interrupts.
+
+ UInt16 kPITCommDivisor = kPITFrequency / ticks; // 100 Hz.
+
+ HAL::rt_out8(kPITControlPort, 0x36); // Command to PIT
+ HAL::rt_out8(kPITChannel0Port, kPITCommDivisor & 0xFF); // Send low byte
+ HAL::rt_out8(kPITChannel0Port, (kPITCommDivisor >> 8) & 0xFF); // Send high byte
+
+ hal_clear_irq_mask(32);
+ }
} // namespace Detail
/// @brief Loads the provided Global Descriptor Table.
diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
index 0d58bb8a..cc346b5c 100644
--- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
@@ -96,7 +96,7 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
kEndTim = hal_rdtsc_fn();
- kout << "Boot Time: " << Kernel::number(kEndTim - kStartTim) << kendl;
+ (void)(Kernel::kout << "Boot Time: " << Kernel::number(kEndTim - kStartTim) << Kernel::kendl);
Kernel::NeFS::fs_init_nefs();
@@ -110,7 +110,7 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
kEndTim = hal_rdtsc_fn();
- kout << "Init Time: " << Kernel::number(kEndTim - kStartTim) << kendl;
+ (void)(Kernel::kout << "Init Time: " << Kernel::number(kEndTim - kStartTim) << Kernel::kendl);
idt_loader.Load(idt_reg);
diff --git a/dev/kernel/HALKit/AMD64/HalKernelPanic.cc b/dev/kernel/HALKit/AMD64/HalKernelPanic.cc
index 3703692c..2641f058 100644
--- a/dev/kernel/HALKit/AMD64/HalKernelPanic.cc
+++ b/dev/kernel/HALKit/AMD64/HalKernelPanic.cc
@@ -33,16 +33,9 @@ namespace Kernel
/***********************************************************************************/
Void ke_panic(const Kernel::Int32& id, const Char* message)
{
- fb_init();
-
- auto panic_text = RGB(0xff, 0xff, 0xff);
-
- auto y = 10;
- auto x = 10;
-
- kout << "Kernel_Panic_MSG: " << message << kendl;
- kout << "Kernel_Panic_ID: " << hex_number(id) << kendl;
- kout << "Kernel_Panic_CR2: " << hex_number((UIntPtr)hal_read_cr2()) << kendl;
+ (void)(kout << "Kernel_Panic_MSG: " << message << kendl);
+ (void)(kout << "Kernel_Panic_ID: " << hex_number(id) << kendl);
+ (void)(kout << "Kernel_Panic_CR2: " << hex_number((UIntPtr)hal_read_cr2()) << kendl);
RecoveryFactory::Recover();
}
@@ -59,8 +52,8 @@ namespace Kernel
{
if (!expr)
{
- kout << "Kernel_Panic_File: " << file << kendl;
- kout << "Kernel_Panic_Line: " << line << kendl;
+ (void)(kout << "Kernel_Panic_File: " << file << kendl);
+ (void)(kout << "Kernel_Panic_Line: " << line << kendl);
ke_panic(RUNTIME_CHECK_FAILED, file); // Runtime Check failed
}
diff --git a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc
index 040b6fd9..8bd98923 100644
--- a/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalPagingMgrAMD64.cc
@@ -12,6 +12,41 @@
namespace Kernel::HAL
{
+ namespace Detail
+ {
+ struct PTE
+ {
+ UInt64 Present : 1;
+ UInt64 Wr : 1;
+ UInt64 User : 1;
+ UInt64 Pwt : 1; // Page-level Write-Through
+ UInt64 Pcd : 1; // Page-level Cache Disable
+ UInt64 Accessed : 1;
+ UInt64 Dirty : 1;
+ UInt64 Pat : 1; // Page Attribute Table (or PS for PDE)
+ UInt64 Global : 1;
+ UInt64 Ignored1 : 3; // Available to software
+ UInt64 PhysicalAddress : 40; // Physical page frame address (bits 12–51)
+ UInt64 Ignored2 : 7; // More software bits / reserved
+ UInt64 Protection_key : 4; // Optional (if PKU enabled)
+ UInt64 Reserved : 1; // Usually reserved
+ UInt64 Nx : 1; // No Execute
+ };
+ } // namespace Detail
+
+ /***********************************************************************************/
+ /// \brief Retrieve the page status of a PTE.
+ /// \param pte Page Table Entry pointer.
+ /***********************************************************************************/
+ STATIC Void mmi_page_status(Detail::PTE* pte)
+ {
+ (void)(kout << (pte->Present ? "Present" : "Not Present") << kendl);
+ (void)(kout << (pte->Wr ? "W/R" : "Not W/R") << kendl);
+ (void)(kout << (pte->Nx ? "NX" : "Not NX") << kendl);
+ (void)(kout << (pte->User ? "User" : "Not User") << kendl);
+ (void)(kout << (pte->Pcd ? "Not Cached" : "Cached") << kendl);
+ }
+
/***********************************************************************************/
/// @brief Gets a physical address from a virtual address.
/// @param virt a valid virtual address.
@@ -25,6 +60,8 @@ namespace Kernel::HAL
UInt64 cr3 = (UInt64)hal_read_cr3() & ~kPageOffsetMask;
+ hal_invl_tlb(virt);
+
// Level 4
auto pml4 = reinterpret_cast<UInt64*>(cr3);
UInt64 pml4e = pml4[(vaddr >> 39) & kMask9Bits];
@@ -54,28 +91,16 @@ namespace Kernel::HAL
// Level 1
auto pt = reinterpret_cast<UInt64*>(pde & ~kPageOffsetMask);
- UInt64 pte = pt[(vaddr >> 12) & kMask9Bits];
+ Detail::PTE* pte = (Detail::PTE*)pt[(vaddr >> 12) & kMask9Bits];
- if (!(pte & 1))
+ if (!pte->Present)
return 0;
- return (pte & ~kPageOffsetMask) | (vaddr & kPageOffsetMask);
- }
+ mmi_page_status((Detail::PTE*)pte);
- /***********************************************************************************/
- /// \brief Retrieve the page status of a PTE.
- /// \param pte Page Table Entry pointer.
- /***********************************************************************************/
- STATIC Void mmi_page_status(PTE* pte)
- {
- kout << (pte->Present ? "Present" : "Not Present") << kendl;
- kout << (pte->Wr ? "W/R" : "Not W/R") << kendl;
- kout << (pte->ExecDisable ? "NX" : "Not NX") << kendl;
- kout << (pte->User ? "User" : "Not User") << kendl;
+ return pte->PhysicalAddress;
}
- STATIC Int32 mmi_map_page_table_entry(UIntPtr virtual_address, UInt32 physical_address, UInt32 flags, NE_PTE* pt_entry, NE_PDE* pd_entry);
-
/***********************************************************************************/
/// @brief Maps or allocates a page from virtual_address.
/// @param virtual_address a valid virtual address.
@@ -95,39 +120,36 @@ namespace Kernel::HAL
UInt64 pml4e = pml4[(vaddr >> 39) & kMask9];
if (!(pml4e & 1))
- return 1;
+ return kErrorInvalidData;
auto pdpt = reinterpret_cast<UInt64*>(pml4e & ~kPageMask);
UInt64 pdpte = pdpt[(vaddr >> 30) & kMask9];
if (!(pdpte & 1))
- return 1;
+ return kErrorInvalidData;
auto pd = reinterpret_cast<UInt64*>(pdpte & ~kPageMask);
UInt64 pde = pd[(vaddr >> 21) & kMask9];
if (!(pde & 1))
- return 1;
-
- auto pt = reinterpret_cast<UInt64*>(pde & ~kPageMask);
- UInt64& pte = pt[(vaddr >> 12) & kMask9];
+ return kErrorInvalidData;
- // Set the new PTE
- pte = (reinterpret_cast<UInt64>(physical_address) & ~0xFFFULL) | 0x01ULL; // Present
+ UInt64* pt = reinterpret_cast<UInt64*>(pde & ~kPageMask);
+ Detail::PTE* pte = (Detail::PTE*)pt[(vaddr >> 12) & kMask9];
- if (flags & ~kMMFlagsPresent)
- pte &= ~(0x01ULL); // Not Present
+ pte->Present = !!(flags & kMMFlagsPresent);
+ pte->Wr = !!(flags & kMMFlagsWr);
+ pte->User = !!(flags & kMMFlagsUser);
+ pte->Nx = !!(flags & kMMFlagsNX);
+ pte->Pcd = !(flags & kMMFlagsUncached);
- if (flags & kMMFlagsWr)
- pte |= 1 << 1; // Writable
+ if (physical_address)
+ pte->PhysicalAddress = (UIntPtr)physical_address;
- if (flags & kMMFlagsUser)
- pte |= 1 << 2; // User
+ hal_invl_tlb(virtual_address);
- if (flags & kMMFlagsNX)
- pte |= 1ULL << 63; // NX
+ mmi_page_status(pte);
- hal_invl_tlb(virtual_address);
- return 0;
+ return kErrorSuccess;
}
} // namespace Kernel::HAL
diff --git a/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc b/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc
index fafb29e9..dea3b3d4 100644
--- a/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalSchedulerCorePrimitivesAMD64.cc
@@ -37,6 +37,7 @@ namespace Kernel
/// Wakes up thread from the hang state.
Void mp_wakeup_thread(HAL::StackFrame* stack)
{
+ NE_UNUSED(stack);
Kernel::UserProcessHelper::StartScheduling();
}
@@ -44,6 +45,8 @@ namespace Kernel
/// hooks and hangs thread to prevent code from executing.
Void mp_hang_thread(HAL::StackFrame* stack)
{
+ NE_UNUSED(stack);
+
while (Yes)
{
/* Nothing to do, code is spinning */
diff --git a/dev/kernel/HALKit/AMD64/HalTimerAMD64.cc b/dev/kernel/HALKit/AMD64/HalTimerAMD64.cc
index 2cb23716..01be2be5 100644
--- a/dev/kernel/HALKit/AMD64/HalTimerAMD64.cc
+++ b/dev/kernel/HALKit/AMD64/HalTimerAMD64.cc
@@ -53,7 +53,7 @@ HardwareTimer::HardwareTimer(Int64 ms)
auto hpet = (Detail::HPET_BLOCK*)power.Find("HPET").Leak().Leak();
MUST_PASS(hpet);
- fDigitalTimer = (IntPtr*)hpet->address.Address;
+ fDigitalTimer = (UIntPtr*)hpet->address.Address;
}
HardwareTimer::~HardwareTimer()
diff --git a/dev/kernel/HALKit/AMD64/PCI/DMA.cc b/dev/kernel/HALKit/AMD64/PCI/DMA.cc
index 33cff13e..4a63625e 100644
--- a/dev/kernel/HALKit/AMD64/PCI/DMA.cc
+++ b/dev/kernel/HALKit/AMD64/PCI/DMA.cc
@@ -31,14 +31,14 @@ namespace Kernel
return reinterpret_cast<UIntPtr>(this->fAddress) >= offset;
}
- bool DMAWrapper::Write(const UIntPtr& bit, const UInt32& offset)
+ bool DMAWrapper::Write(UIntPtr& bit, const UInt32& offset)
{
kout << "[DMAWrapper::Read] Checking this->fAddress...\r";
if (!this->fAddress)
return false;
- kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl;
+ (void)(kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl);
ke_dma_write<UInt32>(reinterpret_cast<UIntPtr>(this->fAddress), offset, bit);
@@ -52,12 +52,12 @@ namespace Kernel
if (!this->fAddress)
return ~0;
- kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl;
+ (void)(kout << "[DMAWrapper::Write] Writing at address: " << hex_number(reinterpret_cast<UIntPtr>(this->fAddress) + offset) << kendl);
- return ke_dma_read<UInt32>(reinterpret_cast<UIntPtr>(this->fAddress), offset);
+ return (UIntPtr)ke_dma_read<UInt32>(reinterpret_cast<UIntPtr>(this->fAddress), offset);
}
- UIntPtr DMAWrapper::operator[](const UIntPtr& offset)
+ UIntPtr DMAWrapper::operator[](UIntPtr& offset)
{
return this->Read(offset);
}
diff --git a/dev/kernel/HALKit/AMD64/Paging.h b/dev/kernel/HALKit/AMD64/Paging.h
index 474c74e7..da90a71a 100644
--- a/dev/kernel/HALKit/AMD64/Paging.h
+++ b/dev/kernel/HALKit/AMD64/Paging.h
@@ -41,25 +41,6 @@ EXTERN_C Kernel::VoidPtr hal_read_cr3(); // @brief Page table.
namespace Kernel::HAL
{
- /// @brief Final page entry (Not PML, PDPT)
- struct PACKED NE_PTE final
- {
- UInt64 Present : 1;
- UInt64 Wr : 1;
- UInt64 User : 1;
- UInt64 Wt : 1;
- UInt64 Cache : 1;
- UInt64 Accessed : 1;
- UInt64 Dirty : 1;
- UInt64 MemoryType : 1;
- UInt64 Global : 1;
- UInt64 Resvered1 : 3;
- UInt64 PhysicalAddress : 36;
- UInt64 Reserved2 : 10;
- UInt64 ProtectionKey : 5;
- UInt64 ExecDisable : 1;
- };
-
namespace Detail
{
enum class ControlRegisterBits
@@ -83,17 +64,13 @@ namespace Kernel::HAL
}
} // namespace Detail
- struct NE_PDE final
- {
- NE_PTE* ALIGN(kPageAlign) fEntries[kPageMax];
- };
- auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, const SizeT pad = 0) -> VoidPtr;
+ auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, SizeT pad = 0) -> VoidPtr;
auto mm_free_bitmap(VoidPtr page_ptr) -> Bool;
} // namespace Kernel::HAL
namespace Kernel
{
- typedef HAL::NE_PTE PTE;
- typedef HAL::NE_PDE PDE;
+ typedef VoidPtr PTE;
+ typedef VoidPtr PDE;
} // namespace Kernel
diff --git a/dev/kernel/HALKit/AMD64/Processor.h b/dev/kernel/HALKit/AMD64/Processor.h
index eff0292b..ff9d13a5 100644
--- a/dev/kernel/HALKit/AMD64/Processor.h
+++ b/dev/kernel/HALKit/AMD64/Processor.h
@@ -68,11 +68,12 @@ namespace Kernel::HAL
/// @brief Memory Manager mapping flags.
enum
{
- kMMFlagsInvalid = 0 << 0,
- kMMFlagsPresent = 1 << 0,
- kMMFlagsWr = 1 << 1,
- kMMFlagsUser = 1 << 2,
- kMMFlagsNX = 1 << 3,
+ kMMFlagsInvalid = 1 << 0,
+ kMMFlagsPresent = 1 << 1,
+ kMMFlagsWr = 1 << 2,
+ kMMFlagsUser = 1 << 3,
+ kMMFlagsNX = 1 << 4,
+ kMMFlagsUncached = 1 << 5,
kMMFlagsCount = 4,
};
diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
index 41aabca2..f0893e2d 100644
--- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
+++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
@@ -76,7 +76,7 @@ namespace AHCI::Detail
UIntPtr addr = (UIntPtr)address;
- UIntPtr aligned_addr = (addr + alignement - 1) & ~alignement - 1;
+ UIntPtr aligned_addr = (addr + alignement - 1) & (~alignement - 1);
return (RetType*)aligned_addr;
}
@@ -87,7 +87,7 @@ STATIC Void drv_compute_disk_ahci() noexcept
kSATASectorCount = 0UL;
/// Normally 512 bytes, but add an additional 512 bytes to make 1 KIB.
- const UInt16 kSzIdent = 256;
+ const UInt16 kSzIdent = 512;
/// Push it to the stack
UInt16* identify_data = AHCI::Detail::ahci_align_address<UInt16>(new UInt16[kSzIdent], kib_cast(1));
@@ -107,6 +107,8 @@ STATIC Void drv_compute_disk_ahci() noexcept
else
kSATASectorCount = lba48_sectors;
+ (Void)(kout << "Device: " << kCurrentDiskModel << kendl);
+
delete[] identify_data;
identify_data = nullptr;
}
@@ -141,7 +143,7 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
slot = drv_find_cmd_slot_ahci(&kSATAHba->Ports[kSATAIndex]);
- if (slot == ~0)
+ if (slot == ~0UL)
{
err_global_get() = kErrorDisk;
return;
@@ -166,11 +168,8 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
/// check for command header.
MUST_PASS(command_header);
- /// 4kb per PRD.
- constexpr const UInt32 kMaxPRDSize = kib_cast(4);
-
- command_header->Cfl = sizeof(FisRegH2D) / sizeof(UInt32);
- command_header->Write = Write;
+ command_header->Struc.Cfl = sizeof(FisRegH2D) / sizeof(UInt32);
+ command_header->Struc.Write = Write;
command_header->Prdtl = 1;
auto ctba_phys = ((UInt64)command_header->Ctbau << 32) | command_header->Ctba;
@@ -186,7 +185,7 @@ STATIC Void drv_std_input_output_ahci(UInt64 lba, UInt8* buffer, SizeT sector_sz
command_table->Prdt[0].Dba = (UInt32)(buffer_phys & 0xFFFFFFFF);
command_table->Prdt[0].Dbau = (UInt32)(buffer_phys >> 32);
command_table->Prdt[0].Dbc = bytes_remaining - 1;
- command_table->Prdt[0].Ie = 1;
+ command_table->Prdt[0].Ie = NO;
volatile FisRegH2D* h2d_fis = (volatile FisRegH2D*)(&command_table->Cfis[0]);
@@ -300,6 +299,8 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL& atapi)
kSATADev.EnableMmio();
kSATADev.BecomeBusMaster();
+ HAL::mm_map_page((VoidPtr)mem_ahci, (VoidPtr)mem_ahci, HAL::kMMFlagsPresent | HAL::kMMFlagsWr | HAL::kMMFlagsUncached);
+
UInt32 ports_implemented = mem_ahci->Pi;
UInt16 ahci_index = 0;
diff --git a/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
index fc608e94..cc8c92d8 100644
--- a/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
+++ b/dev/kernel/HALKit/AMD64/Storage/PIO+Generic.cc
@@ -28,7 +28,6 @@ using namespace Kernel::HAL;
#define kATADataLen 256
STATIC Boolean kATADetected = false;
-STATIC Int32 kATADeviceType = kATADeviceCount;
STATIC UInt16 kATAIdentifyData[kATADataLen] = {0};
STATIC Char kATADiskModel[50] = {"GENERIC PIO"};
@@ -67,6 +66,8 @@ Boolean drv_pio_std_init(UInt16 Bus, UInt8 Drive, UInt16& OutBus, UInt8& OutMast
{
UInt16 IO = Bus;
+ NE_UNUSED(Drive);
+
drv_pio_std_select(IO);
// Bus init, NEIN bit.
@@ -107,7 +108,7 @@ ATAInit_Retry:
kATADiskModel[40] = '\0';
- kout << "Drive Model: " << kATADiskModel << kendl;
+ (void)(kout << "Drive Model: " << kATADiskModel << kendl);
return true;
}
diff --git a/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc b/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
index 8ad16c57..1553b2ed 100644
--- a/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/ARM64/HalApplicationProcessor.cc
@@ -93,7 +93,7 @@ namespace Kernel
const UInt16 kInterruptScheduler = 0x20;
- kout << "Handling interrupt for AP: " << interrupt << kendl;
+ (void)(kout << "Handling interrupt for AP: " << interrupt << kendl);
switch (interrupt)
{
diff --git a/dev/kernel/HALKit/ARM64/HalKernelPanic.cc b/dev/kernel/HALKit/ARM64/HalKernelPanic.cc
index 1e008c0f..1c88ccc6 100644
--- a/dev/kernel/HALKit/ARM64/HalKernelPanic.cc
+++ b/dev/kernel/HALKit/ARM64/HalKernelPanic.cc
@@ -71,8 +71,8 @@ namespace Kernel
{
if (!expr)
{
- kout << "FAILED: FILE: " << file << kendl;
- kout << "FAILED: LINE: " << line << kendl;
+ (void)(kout << "FAILED: FILE: " << file << kendl);
+ (void)(kout << "FAILED: LINE: " << line << kendl);
ke_panic(RUNTIME_CHECK_FAILED, file); // Runtime Check failed
}
diff --git a/dev/kernel/KernelKit/CodeMgr.h b/dev/kernel/KernelKit/CodeMgr.h
index cff3b4bf..47c05d2e 100644
--- a/dev/kernel/KernelKit/CodeMgr.h
+++ b/dev/kernel/KernelKit/CodeMgr.h
@@ -21,7 +21,7 @@
namespace Kernel
{
/// @brief Main process entrypoint.
- typedef void (*rtl_main_kind)(const SizeT argc, Char** argv, Char** envp, const SizeT envp_len);
+ typedef void (*rtl_main_kind)(SizeT argc, Char** argv, Char** envp, SizeT envp_len);
/// @brief C++ Constructor entrypoint.
typedef void (*rtl_ctor_kind)(void);
diff --git a/dev/kernel/KernelKit/DebugOutput.h b/dev/kernel/KernelKit/DebugOutput.h
index 448e6208..c4174f27 100644
--- a/dev/kernel/KernelKit/DebugOutput.h
+++ b/dev/kernel/KernelKit/DebugOutput.h
@@ -107,7 +107,7 @@ namespace Kernel
return term;
}
- if (y < 0)
+ if (y == ~0UL)
y = -y;
const Char kNumbers[11] = "0123456789";
@@ -135,7 +135,7 @@ namespace Kernel
return term;
}
- if (y < 0)
+ if (y == ~0UL)
y = -y;
const Char kNumbers[17] = "0123456789ABCDEF";
@@ -159,15 +159,6 @@ namespace Kernel
return self;
}
- inline TerminalDevice number(const Char* x)
- {
- TerminalDevice self = TerminalDevice::The();
-
- self << "?";
-
- return self;
- }
-
inline TerminalDevice number(const Long& x)
{
TerminalDevice self = TerminalDevice::The();
@@ -208,6 +199,6 @@ namespace Kernel
#undef kout
#endif // ifdef kout
-#define kout Kernel::TerminalDevice::The()
+#define kout TerminalDevice::The()
-#define kendl Kernel::TerminalDevice::The() << Kernel::end_line()
+#define kendl end_line()
diff --git a/dev/kernel/KernelKit/DeviceMgr.h b/dev/kernel/KernelKit/DeviceMgr.h
index f34001f2..64949162 100644
--- a/dev/kernel/KernelKit/DeviceMgr.h
+++ b/dev/kernel/KernelKit/DeviceMgr.h
@@ -22,7 +22,7 @@
#include <NewKit/ErrorOr.h>
#include <NewKit/Ref.h>
-#define kDeviceMgrRootDirPath "/Devices/"
+#define kDeviceMgrRootDirPath "/dev/"
#define NE_DEVICE : public ::Kernel::IDeviceObject
@@ -52,13 +52,13 @@ namespace Kernel
IDeviceObject(const IDeviceObject<T>&) = default;
public:
- virtual IDeviceObject<T>& operator<<(T Data)
+ virtual IDeviceObject<T>& operator<<(T Data) [[maybe_unused]]
{
fOut(this, Data);
return *this;
}
- virtual IDeviceObject<T>& operator>>(T Data)
+ virtual IDeviceObject<T>& operator>>(T Data) [[maybe_unused]]
{
fIn(this, Data);
return *this;
diff --git a/dev/kernel/KernelKit/FileMgr.h b/dev/kernel/KernelKit/FileMgr.h
index f1475749..a73c4a85 100644
--- a/dev/kernel/KernelKit/FileMgr.h
+++ b/dev/kernel/KernelKit/FileMgr.h
@@ -210,7 +210,7 @@ namespace Kernel
FileStream(const FileStream&);
public:
- ErrorOr<Int64> Write(const SizeT offset, const VoidPtr data, SizeT len) noexcept
+ ErrorOr<Int64> Write(SizeT offset, const VoidPtr data, SizeT len) noexcept
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -254,7 +254,7 @@ namespace Kernel
return ErrorOr<Int64>(kErrorInvalidData);
}
- VoidPtr Read(const Char* name, const SizeT sz) noexcept
+ VoidPtr Read(const Char* name, SizeT sz) noexcept
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -262,6 +262,8 @@ namespace Kernel
this->fFileRestrict != kFileMgrRestrictReadBinary)
return nullptr;
+ NE_UNUSED(sz);
+
auto man = FSClass::GetMounted();
if (man)
@@ -273,7 +275,7 @@ namespace Kernel
return nullptr;
}
- VoidPtr Read(SizeT offset, const SizeT sz)
+ VoidPtr Read(SizeT offset, SizeT sz)
{
if (this->fFileRestrict != kFileMgrRestrictReadWrite &&
this->fFileRestrict != kFileMgrRestrictReadWriteBinary &&
@@ -345,7 +347,7 @@ namespace Kernel
const Encoding* restrict_type)
: fFile(Class::GetMounted()->Open(path, restrict_type))
{
- const SizeT kRestrictCount = kRestrictMax;
+ SizeT kRestrictCount = kRestrictMax;
const FileRestrictKind kRestrictList[] = {
{
.fRestrict = kRestrictR,
diff --git a/dev/kernel/KernelKit/HardwareThreadScheduler.h b/dev/kernel/KernelKit/HardwareThreadScheduler.h
index 815be306..74d96bd8 100644
--- a/dev/kernel/KernelKit/HardwareThreadScheduler.h
+++ b/dev/kernel/KernelKit/HardwareThreadScheduler.h
@@ -103,21 +103,21 @@ namespace Kernel
HAL::StackFramePtr Leak() noexcept;
public:
- Ref<HardwareThread*> operator[](const SizeT& idx);
+ Ref<HardwareThread*> operator[](SizeT idx);
bool operator!() noexcept;
operator bool() noexcept;
- const Bool IsUser() override
+ Bool IsUser() override
{
return Yes;
}
- const Bool IsKernel() override
+ Bool IsKernel() override
{
return No;
}
- const Bool HasMP() override
+ Bool HasMP() override
{
return kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled;
}
diff --git a/dev/kernel/KernelKit/MemoryMgr.h b/dev/kernel/KernelKit/MemoryMgr.h
index 061aa182..ac11ac29 100644
--- a/dev/kernel/KernelKit/MemoryMgr.h
+++ b/dev/kernel/KernelKit/MemoryMgr.h
@@ -37,7 +37,7 @@ namespace Kernel
/// @param wr Read Write bit.
/// @param user User enable bit.
/// @return The newly allocated pointer, or nullptr.
- VoidPtr mm_new_heap(const SizeT sz, const Bool wr, const Bool user, const SizeT pad_amount = 0);
+ VoidPtr mm_new_heap(SizeT sz, Bool wr, Bool user, SizeT pad_amount = 0);
/// @brief Protect the heap with a CRC value.
/// @param heap_ptr pointer.
diff --git a/dev/kernel/KernelKit/PCI/DMA.h b/dev/kernel/KernelKit/PCI/DMA.h
index 19170e8f..b2d3cfa8 100644
--- a/dev/kernel/KernelKit/PCI/DMA.h
+++ b/dev/kernel/KernelKit/PCI/DMA.h
@@ -49,19 +49,19 @@ namespace Kernel
T* operator->();
template <class T>
- T* Get(const UIntPtr off = 0);
+ T* Get(UIntPtr off = 0);
public:
operator bool();
bool operator!();
public:
- bool Write(const UIntPtr& bit, const UInt32& offset);
+ bool Write(UIntPtr& bit, const UInt32& offset);
UIntPtr Read(const UInt32& offset);
Boolean Check(UIntPtr offset) const;
public:
- UIntPtr operator[](const UIntPtr& offset);
+ UIntPtr operator[](UIntPtr& offset);
private:
voidPtr fAddress{nullptr};
diff --git a/dev/kernel/KernelKit/PCI/DMA.inl b/dev/kernel/KernelKit/PCI/DMA.inl
index 0b80b208..89381149 100644
--- a/dev/kernel/KernelKit/PCI/DMA.inl
+++ b/dev/kernel/KernelKit/PCI/DMA.inl
@@ -13,7 +13,7 @@ namespace Kernel
}
template <class T>
- T* DMAWrapper::Get(const UIntPtr offset)
+ T* DMAWrapper::Get(UIntPtr offset)
{
return reinterpret_cast<T*>((UIntPtr)this->fAddress + offset);
}
diff --git a/dev/kernel/KernelKit/ProcessScheduler.h b/dev/kernel/KernelKit/ProcessScheduler.h
index d33fe7a5..97589d31 100644
--- a/dev/kernel/KernelKit/ProcessScheduler.h
+++ b/dev/kernel/KernelKit/ProcessScheduler.h
@@ -123,7 +123,7 @@ namespace Kernel
};
using ProcessTime = UInt64;
- using PID = UInt64;
+ using PID = Int64;
/***********************************************************************************/
/// @note For User manager, tells where we run the code.
@@ -245,7 +245,7 @@ namespace Kernel
///! @param pad_amount amount to add after pointer.
///! @return A wrapped pointer, or error code.
/***********************************************************************************/
- ErrorOr<VoidPtr> New(const SizeT& sz, const SizeT& pad_amount = 0);
+ ErrorOr<VoidPtr> New(SizeT sz, SizeT pad_amount = 0);
/***********************************************************************************/
///! @brief TLS free.
@@ -253,12 +253,12 @@ namespace Kernel
///! @param sz the size of it.
/***********************************************************************************/
template <typename T>
- Boolean Delete(ErrorOr<T*> ptr, const SizeT& sz);
+ Boolean Delete(ErrorOr<T*> ptr);
/***********************************************************************************/
///! @brief Wakes up thread.
/***********************************************************************************/
- Void Wake(const Bool wakeup = false);
+ Void Wake(Bool wakeup = false);
public:
/***********************************************************************************/
@@ -337,15 +337,15 @@ namespace Kernel
public:
ProcessID Spawn(const Char* name, VoidPtr code, VoidPtr image);
- const Bool Remove(ProcessID process_id);
+ Void Remove(ProcessID process_id);
- const Bool IsUser() override;
- const Bool IsKernel() override;
- const Bool HasMP() override;
+ Bool IsUser() override;
+ Bool IsKernel() override;
+ Bool HasMP() override;
public:
Ref<UserProcess>& CurrentProcess();
- const SizeT Run() noexcept;
+ SizeT Run() noexcept;
public:
STATIC UserProcessScheduler& The();
@@ -363,7 +363,7 @@ namespace Kernel
class UserProcessHelper final
{
public:
- STATIC Bool Switch(VoidPtr image_ptr, UInt8* stack_ptr, HAL::StackFramePtr frame_ptr, const PID& new_pid);
+ STATIC Bool Switch(VoidPtr image_ptr, UInt8* stack_ptr, HAL::StackFramePtr frame_ptr, PID new_pid);
STATIC Bool CanBeScheduled(const UserProcess& process);
STATIC ErrorOr<PID> TheCurrentPID();
STATIC SizeT StartScheduling();
@@ -373,7 +373,7 @@ namespace Kernel
} // namespace Kernel
#include <KernelKit/ThreadLocalStorage.h>
-#include <KernelKit/ProcessScheduler.inl>
+#include <KernelKit/UserProcessScheduler.inl>
////////////////////////////////////////////////////
// END
diff --git a/dev/kernel/KernelKit/ThreadLocalStorage.inl b/dev/kernel/KernelKit/ThreadLocalStorage.inl
index d017144d..9161b5d0 100644
--- a/dev/kernel/KernelKit/ThreadLocalStorage.inl
+++ b/dev/kernel/KernelKit/ThreadLocalStorage.inl
@@ -42,7 +42,7 @@ inline Kernel::Bool tls_delete_ptr(T* obj) noexcept
ErrorOr<T*> obj_wrapped{obj};
- return ref_process.Leak().Delete(obj_wrapped, sizeof(T));
+ return ref_process.Leak().Delete(obj_wrapped);
}
//! @brief Delete process pointer.
diff --git a/dev/kernel/KernelKit/Timer.h b/dev/kernel/KernelKit/Timer.h
index 86fa1a59..f3fb5ee6 100644
--- a/dev/kernel/KernelKit/Timer.h
+++ b/dev/kernel/KernelKit/Timer.h
@@ -43,7 +43,7 @@ namespace Kernel
BOOL Wait() noexcept override;
private:
- IntPtr* fDigitalTimer{nullptr};
+ UIntPtr* fDigitalTimer{nullptr};
Int64 fWaitFor{0};
};
@@ -60,7 +60,7 @@ namespace Kernel
BOOL Wait() noexcept override;
private:
- IntPtr* fDigitalTimer{nullptr};
+ UIntPtr* fDigitalTimer{nullptr};
Int64 fWaitFor{0};
};
diff --git a/dev/kernel/KernelKit/ProcessScheduler.inl b/dev/kernel/KernelKit/UserProcessScheduler.inl
index 3169682e..39e2aaf0 100644
--- a/dev/kernel/KernelKit/ProcessScheduler.inl
+++ b/dev/kernel/KernelKit/UserProcessScheduler.inl
@@ -17,7 +17,7 @@ namespace Kernel
/***********************************************************************************/
template <typename T>
- Boolean UserProcess::Delete(ErrorOr<T*> ptr, const SizeT& sz)
+ Boolean UserProcess::Delete(ErrorOr<T*> ptr)
{
if (!ptr)
return No;
diff --git a/dev/kernel/NewKit/Array.h b/dev/kernel/NewKit/Array.h
index ca887153..1dcc6720 100644
--- a/dev/kernel/NewKit/Array.h
+++ b/dev/kernel/NewKit/Array.h
@@ -22,7 +22,7 @@ namespace Kernel
Array& operator=(const Array&) = default;
Array(const Array&) = default;
- T& operator[](const SizeT& at)
+ T& operator[](SizeT at)
{
MUST_PASS(at < this->Count());
return fArray[at];
@@ -33,12 +33,12 @@ namespace Kernel
return this->Count() > 0;
}
- const SizeT Capacity()
+ SizeT Capacity()
{
return N;
}
- const SizeT Count()
+ SizeT Count()
{
return N;
}
diff --git a/dev/kernel/NewKit/ArrayList.h b/dev/kernel/NewKit/ArrayList.h
index 16220451..1ea69fc5 100644
--- a/dev/kernel/NewKit/ArrayList.h
+++ b/dev/kernel/NewKit/ArrayList.h
@@ -34,7 +34,7 @@ namespace Kernel
return fList;
}
- T& operator[](int index) const
+ T& operator[](SizeT index) const
{
MUST_PASS(index < this->Count());
return fList[index];
diff --git a/dev/kernel/NewKit/CxxAbi.h b/dev/kernel/NewKit/CxxAbi.h
index 32c91862..4bd3f662 100644
--- a/dev/kernel/NewKit/CxxAbi.h
+++ b/dev/kernel/NewKit/CxxAbi.h
@@ -13,7 +13,7 @@
struct atexit_func_entry_t
{
- void (*destructor_func)(void*);
+ void (*destructor_func)();
void* obj_ptr;
void* dso_handle;
};
diff --git a/dev/kernel/NewKit/Defines.h b/dev/kernel/NewKit/Defines.h
index 72e3c552..15b1d907 100644
--- a/dev/kernel/NewKit/Defines.h
+++ b/dev/kernel/NewKit/Defines.h
@@ -135,8 +135,9 @@ namespace Kernel
/// @param type (a1) the data.
/// @return a1 as Char*
template <typename T>
- Char* AsBytes(T type) noexcept
+ const Char* AsBytes(T type) noexcept
{
+ NE_UNUSED(type);
return nullptr;
}
@@ -180,19 +181,19 @@ namespace Kernel
ISchedulable(const ISchedulable&) = default;
/// @brief Is this object only accepting user tasks?
- virtual const Bool IsUser()
+ virtual Bool IsUser()
{
return NO;
}
/// @brief Is this object only accepting kernel tasks?
- virtual const Bool IsKernel()
+ virtual Bool IsKernel()
{
return NO;
}
/// @brief Is this object offloading to another CPU?
- virtual const Bool HasMP()
+ virtual Bool HasMP()
{
return NO;
}
diff --git a/dev/kernel/NewKit/Json.h b/dev/kernel/NewKit/Json.h
index 5f979ceb..3cbc61dd 100644
--- a/dev/kernel/NewKit/Json.h
+++ b/dev/kernel/NewKit/Json.h
@@ -45,7 +45,7 @@ namespace Kernel
NE_COPY_DEFAULT(Json);
- const Bool& IsUndefined()
+ Bool& IsUndefined()
{
return fUndefined;
}
diff --git a/dev/kernel/NewKit/KString.h b/dev/kernel/NewKit/KString.h
index ff809bd3..0c9aaa34 100644
--- a/dev/kernel/NewKit/KString.h
+++ b/dev/kernel/NewKit/KString.h
@@ -30,7 +30,7 @@ namespace Kernel
rt_set_memory(fData, 0, fDataSz);
}
- explicit KString(const SizeT& Sz)
+ explicit KString(SizeT Sz)
: fDataSz(Sz)
{
MUST_PASS(Sz > 1);
diff --git a/dev/kernel/NewKit/KernelPanic.h b/dev/kernel/NewKit/KernelPanic.h
index 08f2990a..60a6519c 100644
--- a/dev/kernel/NewKit/KernelPanic.h
+++ b/dev/kernel/NewKit/KernelPanic.h
@@ -33,8 +33,7 @@ namespace Kernel
#undef __MUST_PASS
#endif
-#define __MUST_PASS(EXPR, FILE, LINE) \
- Kernel::ke_runtime_check(EXPR, FILE, STRINGIFY(LINE))
+#define __MUST_PASS(EXPR, FILE, LINE) Kernel::ke_runtime_check(EXPR, FILE, STRINGIFY(LINE))
#ifdef __DEBUG__
#define MUST_PASS(EXPR) __MUST_PASS((EXPR), __FILE__, __LINE__)
diff --git a/dev/kernel/NewKit/MutableArray.h b/dev/kernel/NewKit/MutableArray.h
index b6bb0d98..40d61495 100644
--- a/dev/kernel/NewKit/MutableArray.h
+++ b/dev/kernel/NewKit/MutableArray.h
@@ -96,7 +96,7 @@ namespace Kernel
}
public:
- T operator[](const SizeT& Index) const
+ T operator[](SizeT Index) const
{
TRY_FIND_NODE(first, fFirstNode);
TRY_FIND_NODE(last, fLastNode);
@@ -110,7 +110,7 @@ namespace Kernel
}
public:
- Boolean Remove(const SizeT& Index)
+ Boolean Remove(SizeT Index)
{
TRY_REMOVE_NODE(fFirstNode);
TRY_REMOVE_NODE(fLastNode);
@@ -200,7 +200,7 @@ namespace Kernel
}
public:
- Ref<T> operator[](const SizeT& Index) const
+ Ref<T> operator[](SizeT Index) const
{
TRY_FIND_NODE2(first, fFirstNode);
TRY_FIND_NODE2(last, fLastNode);
diff --git a/dev/kernel/NewKit/PageMgr.h b/dev/kernel/NewKit/PageMgr.h
index 537b3225..bc8ee776 100644
--- a/dev/kernel/NewKit/PageMgr.h
+++ b/dev/kernel/NewKit/PageMgr.h
@@ -27,7 +27,7 @@ namespace Kernel
PTEWrapper(const PTEWrapper&) = default;
public:
- const UIntPtr VirtualAddress();
+ UIntPtr VirtualAddress();
Void NoExecute(const bool enable = false);
Bool NoExecute();
diff --git a/dev/kernel/NewKit/Ref.h b/dev/kernel/NewKit/Ref.h
index 2523c46a..7ec0825a 100644
--- a/dev/kernel/NewKit/Ref.h
+++ b/dev/kernel/NewKit/Ref.h
@@ -33,8 +33,9 @@ namespace Kernel
}
Ref(T cls)
- : fClass(&cls)
+ : fClass(nullptr)
{
+ fClass = new T(cls);
}
Ref& operator=(T ref)
diff --git a/dev/kernel/NewKit/Utils.h b/dev/kernel/NewKit/Utils.h
index 23f5c6c2..5fc77366 100644
--- a/dev/kernel/NewKit/Utils.h
+++ b/dev/kernel/NewKit/Utils.h
@@ -26,5 +26,5 @@ namespace Kernel
Int rt_to_uppercase(Int c);
Int rt_to_lower(Int c);
voidPtr rt_string_in_string(const Char* in, const Char* needle);
- char* rt_string_has_char(Char* str, const Char chr);
+ char* rt_string_has_char(Char* str, Char chr);
} // namespace Kernel
diff --git a/dev/kernel/SwapKit/DiskSwap.h b/dev/kernel/SwapKit/DiskSwap.h
index d09e719a..d8377656 100644
--- a/dev/kernel/SwapKit/DiskSwap.h
+++ b/dev/kernel/SwapKit/DiskSwap.h
@@ -37,7 +37,7 @@ namespace Kernel
/// @param data the data packet.
/// @return Whether the swap was written to disk, or not.
/***********************************************************************************/
- BOOL Write(const Char* fork_name, const SizeT fork_name_len, SWAP_DISK_HEADER* data);
+ BOOL Write(const Char* fork_name, SizeT fork_name_len, SWAP_DISK_HEADER* data);
/***********************************************************************************/
/// @brief Read memory chunk from disk.
@@ -46,7 +46,7 @@ namespace Kernel
/// @param data the data packet length.
/// @return Whether the swap was fetched to disk, or not.
/***********************************************************************************/
- SWAP_DISK_HEADER* Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len);
+ SWAP_DISK_HEADER* Read(const Char* fork_name, SizeT fork_name_len, SizeT data_len);
};
/// @brief Swap disk header, containing information about the held virtual memory.
@@ -65,6 +65,6 @@ namespace Kernel
UInt64 fProcessID;
UInt64 fVirtualAddress;
SizeT fBlobSz;
- UInt8 fBlob[];
+ UInt8 fBlob[1];
} PACKED SWAP_DISK_HEADER;
} // namespace Kernel
diff --git a/dev/kernel/amd64-ci.make b/dev/kernel/amd64-ci.make
index a03c8fdd..4c76c0f3 100644
--- a/dev/kernel/amd64-ci.make
+++ b/dev/kernel/amd64-ci.make
@@ -5,7 +5,7 @@
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-ld
-CCFLAGS = -fshort-wchar -c -D__NE_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__NE_SUPPORT_NX__ -O0 -I../Vendor -D__FSKIT_INCLUDES_NEFS__ -D__NEOSKRNL__ -D__HAVE_NE_APIS__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../zba
+CCFLAGS = -fshort-wchar -c -D__NE_AMD64__ -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__NEOSKRNL__ -D__HAVE_NE_APIS__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../zba
ASM = nasm
@@ -47,8 +47,8 @@ error:
MOVEALL=./MoveAll.X64.sh
WINDRES=x86_64-w64-mingw32-windres
-.PHONY: newos-amd64-epm
-newos-amd64-epm: clean
+.PHONY: nekernel-amd64-epm
+nekernel-amd64-epm: clean
$(WINDRES) kernel_rsrc.rsrc -O coff -o kernel_rsrc.obj
$(CXX) $(CCFLAGS) $(DISK_DRV) $(DEBUG_MACRO) $(wildcard src/*.cc) $(wildcard HALKit/AMD64/PCI/*.cc) $(wildcard src/Network/*.cc) $(wildcard src/Storage/*.cc) $(wildcard src/FS/*.cc) $(wildcard HALKit/AMD64/Storage/*.cc) $(wildcard HALKit/AMD64/*.cc) $(wildcard src/Swap/*.cc) $(wildcard HALKit/AMD64/*.s)
$(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm
@@ -64,7 +64,7 @@ link-amd64-epm:
$(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL_IMG)
.PHONY: all
-all: newos-amd64-epm link-amd64-epm
+all: nekernel-amd64-epm link-amd64-epm
@echo "Kernel => OK."
.PHONY: help
@@ -72,7 +72,7 @@ help:
@echo "=== HELP ==="
@echo "all: Build Kernel and link it."
@echo "link-amd64-epm: Link Kernel for EPM based disks."
- @echo "newos-amd64-epm: Build Kernel for EPM based disks."
+ @echo "nekernel-amd64-epm: Build Kernel for EPM based disks."
.PHONY: clean
clean:
diff --git a/dev/kernel/amd64-desktop.make b/dev/kernel/amd64-desktop.make
index a03c8fdd..905a6c91 100644
--- a/dev/kernel/amd64-desktop.make
+++ b/dev/kernel/amd64-desktop.make
@@ -5,7 +5,7 @@
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-ld
-CCFLAGS = -fshort-wchar -c -D__NE_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__NE_SUPPORT_NX__ -O0 -I../Vendor -D__FSKIT_INCLUDES_NEFS__ -D__NEOSKRNL__ -D__HAVE_NE_APIS__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../zba
+CCFLAGS = -fshort-wchar -c -D__NE_AMD64__ -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__NEOSKRNL__ -D__HAVE_NE_APIS__ -D__FREESTANDING__ -D__NE_VIRTUAL_MEMORY_SUPPORT__ -D__NE_AUTO_FORMAT__ -D__NE__ -I./ -I../ -I../zba
ASM = nasm
@@ -47,8 +47,8 @@ error:
MOVEALL=./MoveAll.X64.sh
WINDRES=x86_64-w64-mingw32-windres
-.PHONY: newos-amd64-epm
-newos-amd64-epm: clean
+.PHONY: nekernel-amd64-epm
+nekernel-amd64-epm: clean
$(WINDRES) kernel_rsrc.rsrc -O coff -o kernel_rsrc.obj
$(CXX) $(CCFLAGS) $(DISK_DRV) $(DEBUG_MACRO) $(wildcard src/*.cc) $(wildcard HALKit/AMD64/PCI/*.cc) $(wildcard src/Network/*.cc) $(wildcard src/Storage/*.cc) $(wildcard src/FS/*.cc) $(wildcard HALKit/AMD64/Storage/*.cc) $(wildcard HALKit/AMD64/*.cc) $(wildcard src/Swap/*.cc) $(wildcard HALKit/AMD64/*.s)
$(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm
@@ -64,7 +64,7 @@ link-amd64-epm:
$(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL_IMG)
.PHONY: all
-all: newos-amd64-epm link-amd64-epm
+all: nekernel-amd64-epm link-amd64-epm
@echo "Kernel => OK."
.PHONY: help
@@ -72,7 +72,7 @@ help:
@echo "=== HELP ==="
@echo "all: Build Kernel and link it."
@echo "link-amd64-epm: Link Kernel for EPM based disks."
- @echo "newos-amd64-epm: Build Kernel for EPM based disks."
+ @echo "nekernel-amd64-epm: Build Kernel for EPM based disks."
.PHONY: clean
clean:
diff --git a/dev/kernel/arm64-desktop.make b/dev/kernel/arm64-desktop.make
index 7ae4d9f8..ec2a04ce 100644
--- a/dev/kernel/arm64-desktop.make
+++ b/dev/kernel/arm64-desktop.make
@@ -32,8 +32,8 @@ error:
MOVEALL=./MoveAll.ARM64.sh
-.PHONY: newos-arm64-epm
-newos-arm64-epm: clean
+.PHONY: nekernel-arm64-epm
+nekernel-arm64-epm: clean
$(CC) $(CCFLAGS) $(DISKDRIVER) $(DEBUG) $(wildcard src/*.cc) \
$(wildcard src/FS/*.cc) $(wildcard HALKit/ARM64/Storage/*.cc) \
$(wildcard HALKit/ARM64/PCI/*.cc) $(wildcard src/Network/*.cc) $(wildcard src/Storage/*.cc) \
@@ -49,7 +49,7 @@ link-arm64-epm:
$(LD) $(LDFLAGS) $(LDOBJ) /out:$(KERNEL)
.PHONY: all
-all: newos-arm64-epm link-arm64-epm
+all: nekernel-arm64-epm link-arm64-epm
@echo "Kernel => OK."
.PHONY: help
@@ -57,7 +57,7 @@ help:
@echo "=== HELP ==="
@echo "all: Build Kernel and link it."
@echo "link-arm64-epm: Link Kernel for EPM based disks."
- @echo "newos-arm64-epm: Build Kernel for EPM based disks."
+ @echo "nekernel-arm64-epm: Build Kernel for EPM based disks."
.PHONY: clean
clean:
diff --git a/dev/kernel/src/ACPIFactoryInterface.cc b/dev/kernel/src/ACPIFactoryInterface.cc
index 00fb3465..b85d6ab3 100644
--- a/dev/kernel/src/ACPIFactoryInterface.cc
+++ b/dev/kernel/src/ACPIFactoryInterface.cc
@@ -43,10 +43,10 @@ namespace Kernel
this->fEntries = num;
- kout << "ACPI: Number of entries: " << number(this->fEntries) << kendl;
- kout << "ACPI: Revision: " << number(xsdt->Revision) << kendl;
- kout << "ACPI: Signature: " << xsdt->Signature << kendl;
- kout << "ACPI: Address of XSDT: " << hex_number((UIntPtr)xsdt) << kendl;
+ (void)(kout << "ACPI: Number of entries: " << number(this->fEntries) << kendl);
+ (void)(kout << "ACPI: Revision: " << number(xsdt->Revision) << kendl);
+ (void)(kout << "ACPI: Signature: " << xsdt->Signature << kendl);
+ (void)(kout << "ACPI: Address of XSDT: " << hex_number((UIntPtr)xsdt) << kendl);
const short cAcpiSignatureLength = 4;
@@ -54,8 +54,8 @@ namespace Kernel
{
SDT* sdt = reinterpret_cast<SDT*>(xsdt->AddressArr[index]);
- kout << "ACPI: Checksum: " << number(sdt->Checksum) << kendl;
- kout << "ACPI: Revision: " << number(sdt->Revision) << kendl;
+ (void)(kout << "ACPI: Checksum: " << number(sdt->Checksum) << kendl);
+ (void)(kout << "ACPI: Revision: " << number(sdt->Revision) << kendl);
for (short signature_index = 0; signature_index < cAcpiSignatureLength; ++signature_index)
{
@@ -64,8 +64,8 @@ namespace Kernel
if (signature_index == (cAcpiSignatureLength - 1))
{
- kout << "ACPI: SDT Signature: " << sdt->Signature << kendl;
- kout << "ACPI: SDT OEM ID: " << sdt->OemId << kendl;
+ (void)(kout << "ACPI: SDT Signature: " << sdt->Signature << kendl);
+ (void)(kout << "ACPI: SDT OEM ID: " << sdt->OemId << kendl);
return ErrorOr<voidPtr>(reinterpret_cast<voidPtr>(xsdt->AddressArr[index]));
}
}
diff --git a/dev/kernel/src/BitMapMgr.cc b/dev/kernel/src/BitMapMgr.cc
index 63cadde3..5e596d6f 100644
--- a/dev/kernel/src/BitMapMgr.cc
+++ b/dev/kernel/src/BitMapMgr.cc
@@ -78,6 +78,8 @@ namespace Kernel
if (user)
flags |= kMMFlagsUser;
+ flags |= HAL::kMMFlagsUncached;
+
return flags;
}
@@ -90,7 +92,7 @@ namespace Kernel
/// @param pad additional padding added to **size**
/// @return The new free address, or nullptr.
/***********************************************************************************/
- auto FindBitMap(VoidPtr base_ptr, const SizeT size, const Bool wr, const Bool user, const SizeT pad) -> VoidPtr
+ auto FindBitMap(VoidPtr base_ptr, SizeT size, Bool wr, Bool user, SizeT pad) -> VoidPtr
{
if (!size)
return nullptr;
@@ -160,18 +162,18 @@ namespace Kernel
{
if (!this->IsBitMap(ptr_bit_set))
{
- kout << "Not a BitMap: " << hex_number((UIntPtr)ptr_bit_set) << kendl;
+ (void)(kout << "Not a BitMap: " << hex_number((UIntPtr)ptr_bit_set) << kendl);
return;
}
- kout << "Magic: " << hex_number(ptr_bit_set[kBitMapMagIdx]) << kendl;
- kout << "Is Allocated? " << (ptr_bit_set[kBitMapUsedIdx] ? "YES" : "NO") << kendl;
- kout << "Size of BitMap (B): " << number(ptr_bit_set[kBitMapSizeIdx]) << kendl;
- kout << "Size of BitMap (KIB): " << number(KIB(ptr_bit_set[kBitMapSizeIdx])) << kendl;
- kout << "Size of BitMap (MIB): " << number(MIB(ptr_bit_set[kBitMapSizeIdx])) << kendl;
- kout << "Size of BitMap (GIB): " << number(GIB(ptr_bit_set[kBitMapSizeIdx])) << kendl;
- kout << "Size of BitMap (TIB): " << number(TIB(ptr_bit_set[kBitMapSizeIdx])) << kendl;
- kout << "BitMap Address: " << hex_number((UIntPtr)ptr_bit_set) << kendl;
+ (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);
+ (void)(kout << "Size of BitMap (KIB): " << number(KIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (void)(kout << "Size of BitMap (MIB): " << number(MIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (void)(kout << "Size of BitMap (GIB): " << number(GIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (void)(kout << "Size of BitMap (TIB): " << number(TIB(ptr_bit_set[kBitMapSizeIdx])) << kendl);
+ (void)(kout << "BitMap Address: " << hex_number((UIntPtr)ptr_bit_set) << kendl);
}
};
} // namespace Detail
@@ -188,15 +190,14 @@ namespace Kernel
/// @param user user bit.
/// @return a new bitmap allocated pointer.
/***********************************************************************************/
- auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, const SizeT pad) -> VoidPtr
+ auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, SizeT pad) -> VoidPtr
{
VoidPtr ptr_new = nullptr;
Detail::IBitMapProxy bitmp;
- ptr_new = bitmp.FindBitMap(kKernelBitMpStart, size, wr, user, pad);
-
- MUST_PASS(ptr_new);
+ NE_UNUSED(is_page);
+ ptr_new = bitmp.FindBitMap(kKernelBitMpStart, size, wr, user, pad);
return (UIntPtr*)ptr_new;
}
diff --git a/dev/kernel/src/CxxAbi-AMD64.cc b/dev/kernel/src/CxxAbi-AMD64.cc
index 9270d612..6bf5d009 100644
--- a/dev/kernel/src/CxxAbi-AMD64.cc
+++ b/dev/kernel/src/CxxAbi-AMD64.cc
@@ -19,24 +19,22 @@ Kernel::UIntPtr __dso_handle;
EXTERN_C Kernel::Void __cxa_pure_virtual(void* self)
{
- kout << "object: " << Kernel::number(reinterpret_cast<Kernel::UIntPtr>(self));
- kout << ", has unimplemented virtual functions.\r";
+ (void)(Kernel::kout << "object: " << Kernel::number(reinterpret_cast<Kernel::UIntPtr>(self)));
+ (void)(Kernel::kout << ", has unimplemented virtual functions.\r");
}
EXTERN_C void ___chkstk_ms(void)
{
- kout << "Stack smashing detected!\r";
+ (void)(Kernel::kout << "Stack smashing detected!\r");
dbg_break_point();
}
-EXTERN_C int atexit(void (*f)(void*), void* arg, void* dso)
+EXTERN_C int atexit(void (*f)())
{
if (__atexit_func_count >= kAtExitMacDestructors)
return 1;
__atexit_funcs[__atexit_func_count].destructor_func = f;
- __atexit_funcs[__atexit_func_count].obj_ptr = arg;
- __atexit_funcs[__atexit_func_count].dso_handle = dso;
__atexit_func_count++;
@@ -52,7 +50,7 @@ EXTERN_C void __cxa_finalize(void* f)
{
if (__atexit_funcs[i].destructor_func)
{
- (*__atexit_funcs[i].destructor_func)(__atexit_funcs[i].obj_ptr);
+ (*__atexit_funcs[i].destructor_func)();
};
}
@@ -63,7 +61,7 @@ EXTERN_C void __cxa_finalize(void* f)
{
if (__atexit_funcs[i].destructor_func)
{
- (*__atexit_funcs[i].destructor_func)(__atexit_funcs[i].obj_ptr);
+ (*__atexit_funcs[i].destructor_func)();
__atexit_funcs[i].destructor_func = 0;
};
}
diff --git a/dev/kernel/src/DriveMgr.cc b/dev/kernel/src/DriveMgr.cc
index 0d24d4f8..a379ea43 100644
--- a/dev/kernel/src/DriveMgr.cc
+++ b/dev/kernel/src/DriveMgr.cc
@@ -63,6 +63,8 @@ namespace Kernel
/// @return
Void io_drv_init(DriveTrait::DrivePacket pckt)
{
+ NE_UNUSED(pckt);
+
#if defined(__ATA_PIO__) || defined(__ATA_DMA__)
kATAMaster = 0;
kATAIO = 0;
@@ -191,7 +193,7 @@ namespace Kernel
}
else
{
- kout << "Scheme Found: " << block_struct.Name << kendl;
+ (void)(kout << "Scheme Found: " << block_struct.Name << kendl);
}
}
diff --git a/dev/kernel/src/FS/NeFS+FileMgr.cc b/dev/kernel/src/FS/NeFS+FileMgr.cc
index fec88fae..0107bd9e 100644
--- a/dev/kernel/src/FS/NeFS+FileMgr.cc
+++ b/dev/kernel/src/FS/NeFS+FileMgr.cc
@@ -92,14 +92,14 @@ namespace Kernel
/// @brief Gets the separator character.
/// @return
- const Char NeFileSystemHelper::Separator()
+ Char NeFileSystemHelper::Separator()
{
return kNeFSSeparator;
}
/// @brief Gets the metafile character.
/// @return
- const Char NeFileSystemHelper::MetaFile()
+ Char NeFileSystemHelper::MetaFile()
{
return kNeFSMetaFilePrefix;
}
diff --git a/dev/kernel/src/FS/NeFS.cc b/dev/kernel/src/FS/NeFS.cc
index 7bc02b39..c98841ee 100644
--- a/dev/kernel/src/FS/NeFS.cc
+++ b/dev/kernel/src/FS/NeFS.cc
@@ -73,7 +73,7 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NEFS_FORK_STRUCT& the_fork)
Lba lba = catalog->DataFork;
- kout << "Fork LBA: " << hex_number(lba) << kendl;
+ (void)(kout << "Fork LBA: " << hex_number(lba) << kendl);
if (lba < kNeFSCatalogStartAddress)
return NO;
@@ -94,7 +94,7 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NEFS_FORK_STRUCT& the_fork)
drv.fInput(drv.fPacket);
- kout << "Next fork: " << hex_number(cur_fork.NextSibling) << kendl;
+ (void)(kout << "Next fork: " << hex_number(cur_fork.NextSibling) << kendl);
if (cur_fork.Flags & kNeFSFlagCreated)
{
@@ -139,17 +139,15 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NEFS_FORK_STRUCT& the_fork)
drv.fPacket.fPacketSize = sizeof(NEFS_FORK_STRUCT);
drv.fPacket.fPacketContent = &the_fork;
- kout << "Allocating fork block...\r";
-
- // drv.fOutput(drv.fPacket);
+ drv.fOutput(drv.fPacket);
fs_ifs_write(&kMountpoint, drv, MountpointInterface::kDriveIndexA);
/// log what we have now.
- kout << "Fork offset is at: " << hex_number(the_fork.DataOffset)
- << kendl;
+ (void)(kout << "Fork offset is at: " << hex_number(the_fork.DataOffset)
+ << kendl);
- kout << "Wrote fork metadata at: " << hex_number(lba) << kendl;
+ (void)(kout << "Wrote fork metadata at: " << hex_number(lba) << kendl);
return YES;
}
@@ -427,11 +425,6 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char
drive.fOutput(drive.fPacket);
- kout << "Create new catalog with flags: "
- << hex_number(child_catalog->Flags) << kendl;
- kout << "Create new catalog with name: " << child_catalog->Name
- << kendl;
-
delete catalog;
catalog = nullptr;
@@ -577,8 +570,6 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
rt_copy_memory((VoidPtr)kNeFSUntitledHD, (VoidPtr)part_block->PartitionName,
rt_string_len(kNeFSUntitledHD));
- SizeT catalogCount = 0UL;
-
SizeT sectorCount = drv_get_sector_count();
SizeT diskSize = drv_get_size();
@@ -597,14 +588,14 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fOutput(drive->fPacket);
- kout << "drive kind: " << drive->fProtocol() << kendl;
+ (void)(kout << "drive kind: " << drive->fProtocol() << kendl);
- kout << "partition name: " << part_block->PartitionName << kendl;
- kout << "start: " << hex_number(part_block->StartCatalog) << kendl;
- kout << "number of catalogs: " << hex_number(part_block->CatalogCount) << kendl;
- kout << "free catalog: " << hex_number(part_block->FreeCatalog) << kendl;
- kout << "free sectors: " << hex_number(part_block->FreeSectors) << kendl;
- kout << "sector size: " << hex_number(part_block->SectorSize) << kendl;
+ (void)(kout << "partition name: " << part_block->PartitionName << kendl);
+ (void)(kout << "start: " << hex_number(part_block->StartCatalog) << kendl);
+ (void)(kout << "number of catalogs: " << hex_number(part_block->CatalogCount) << kendl);
+ (void)(kout << "free catalog: " << hex_number(part_block->FreeCatalog) << kendl);
+ (void)(kout << "free sectors: " << hex_number(part_block->FreeSectors) << kendl);
+ (void)(kout << "sector size: " << hex_number(part_block->SectorSize) << kendl);
// write the root catalog.
this->CreateCatalog(kNeFSRoot, 0, kNeFSCatalogKindDir);
@@ -663,7 +654,7 @@ bool NeFileSystemParser::WriteCatalog(_Input const Char* catalog_name, Bool is_r
NEFS_FORK_STRUCT* fork_data_input = new NEFS_FORK_STRUCT();
NEFS_FORK_STRUCT prev_fork{};
- kout << hex_number(startFork) << kendl;
+ (void)(kout << hex_number(startFork) << kendl);
// sanity check of the fork position as the condition to run the loop.
while (startFork >= kNeFSCatalogStartAddress)
@@ -674,13 +665,13 @@ bool NeFileSystemParser::WriteCatalog(_Input const Char* catalog_name, Bool is_r
drive.fInput(drive.fPacket);
- kout << hex_number(fork_data_input->DataSize) << kendl;
- kout << hex_number(size_of_data) << kendl;
- kout << hex_number(fork_data_input->Flags) << kendl;
- kout << fork_name << kendl;
- kout << fork_data_input->ForkName << kendl;
- kout << fork_data_input->CatalogName << kendl;
- kout << catalog_name << kendl;
+ (void)(kout << hex_number(fork_data_input->DataSize) << kendl);
+ (void)(kout << hex_number(size_of_data) << kendl);
+ (void)(kout << hex_number(fork_data_input->Flags) << kendl);
+ (void)(kout << fork_name << kendl);
+ (void)(kout << fork_data_input->ForkName << kendl);
+ (void)(kout << fork_data_input->CatalogName << kendl);
+ (void)(kout << catalog_name << kendl);
if ((fork_data_input->Flags & kNeFSFlagCreated) &&
KStringBuilder::Equals(fork_data_input->ForkName, fork_name) &&
@@ -695,11 +686,11 @@ bool NeFileSystemParser::WriteCatalog(_Input const Char* catalog_name, Bool is_r
drive.fPacket.fPacketSize = size_of_data;
drive.fPacket.fPacketLba = fork_data_input->DataOffset;
- kout << "data offset: " << hex_number(fork_data_input->DataOffset) << kendl;
+ (void)(kout << "data offset: " << hex_number(fork_data_input->DataOffset) << kendl);
drive.fOutput(drive.fPacket);
- kout << "wrote data at offset: " << hex_number(fork_data_input->DataOffset) << kendl;
+ (void)(kout << "wrote data at offset: " << hex_number(fork_data_input->DataOffset) << kendl);
delete fork_data_input;
delete[] buf;
@@ -732,7 +723,7 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::FindCatalog(_Input const Char*
*catalog_name == 0)
return nullptr;
- NEFS_ROOT_PARTITION_BLOCK part{0};
+ NEFS_ROOT_PARTITION_BLOCK part{};
auto& drive = kMountpoint.A();
rt_copy_memory((VoidPtr) "fs/nefs-packet", drive.fPacket.fPacketMime,
@@ -745,7 +736,6 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::FindCatalog(_Input const Char*
drive.fInput(drive.fPacket);
auto start_catalog_lba = kNeFSCatalogStartAddress;
- const auto kStartCatalogList = start_catalog_lba;
if (!KStringBuilder::Equals(catalog_name, NeFileSystemHelper::Root()) && local_search)
{
@@ -839,8 +829,8 @@ kNeFSSearchThroughCatalogList:
goto NeFSContinueSearch;
}
- kout << "Found available catalog at: " << hex_number(start_catalog_lba) << kendl;
- kout << "Found available catalog at: " << temporary_catalog.Name << kendl;
+ (void)(kout << "Found available catalog at: " << hex_number(start_catalog_lba) << kendl);
+ (void)(kout << "Found available catalog at: " << temporary_catalog.Name << kendl);
NEFS_CATALOG_STRUCT* catalog_ptr = new NEFS_CATALOG_STRUCT();
rt_copy_memory(&temporary_catalog, catalog_ptr, sizeof(NEFS_CATALOG_STRUCT));
@@ -974,11 +964,9 @@ VoidPtr NeFileSystemParser::ReadCatalog(_Input _Output NEFS_CATALOG_STRUCT* cata
return nullptr;
}
- Lba dataForkLba = (!is_rsrc_fork) ? catalog->DataFork : catalog->ResourceFork;
- Size dataForkSize = (!is_rsrc_fork) ? catalog->DataForkSize : catalog->ResourceForkSize;
+ NE_UNUSED(dataSz);
- kout << "catalog " << catalog->Name
- << ", fork: " << hex_number(dataForkLba) << kendl;
+ Lba dataForkLba = (!is_rsrc_fork) ? catalog->DataFork : catalog->ResourceFork;
NEFS_FORK_STRUCT* fs_buf = new NEFS_FORK_STRUCT();
auto& drive = kMountpoint.A();
@@ -998,8 +986,8 @@ VoidPtr NeFileSystemParser::ReadCatalog(_Input _Output NEFS_CATALOG_STRUCT* cata
fs_fork_data = fs_buf;
- kout << "ForkName: " << fs_fork_data->ForkName << kendl;
- kout << "CatalogName: " << fs_fork_data->CatalogName << kendl;
+ (void)(kout << "ForkName: " << fs_fork_data->ForkName << kendl);
+ (void)(kout << "CatalogName: " << fs_fork_data->CatalogName << kendl);
if (KStringBuilder::Equals(forkName, fs_fork_data->ForkName) &&
KStringBuilder::Equals(catalog->Name, fs_fork_data->CatalogName))
@@ -1026,6 +1014,9 @@ VoidPtr NeFileSystemParser::ReadCatalog(_Input _Output NEFS_CATALOG_STRUCT* cata
bool NeFileSystemParser::Seek(_Input _Output NEFS_CATALOG_STRUCT* catalog, SizeT off)
{
+ NE_UNUSED(catalog);
+ NE_UNUSED(off);
+
err_global_get() = kErrorUnimplemented;
return false;
}
@@ -1038,6 +1029,8 @@ bool NeFileSystemParser::Seek(_Input _Output NEFS_CATALOG_STRUCT* catalog, SizeT
SizeT NeFileSystemParser::Tell(_Input _Output NEFS_CATALOG_STRUCT* catalog)
{
+ NE_UNUSED(catalog);
+
err_global_get() = kErrorUnimplemented;
return 0;
}
diff --git a/dev/kernel/src/GUIDWizard.cc b/dev/kernel/src/GUIDWizard.cc
index c2af3230..4aab3b76 100644
--- a/dev/kernel/src/GUIDWizard.cc
+++ b/dev/kernel/src/GUIDWizard.cc
@@ -26,17 +26,17 @@ namespace CF::XRN::Version1
Ref<GUIDSequence*> seq_ref{seq};
- seq_ref.Leak()->fMs1 = uuidSeq[0];
- seq_ref.Leak()->fMs2 = uuidSeq[1];
- seq_ref.Leak()->fMs3 = uuidSeq[2];
- seq_ref.Leak()->fMs4[0] = uuidSeq[3];
- seq_ref.Leak()->fMs4[1] = uuidSeq[4];
- seq_ref.Leak()->fMs4[2] = uuidSeq[5];
- seq_ref.Leak()->fMs4[3] = uuidSeq[6];
- seq_ref.Leak()->fMs4[4] = uuidSeq[7];
- seq_ref.Leak()->fMs4[5] = uuidSeq[8];
- seq_ref.Leak()->fMs4[6] = uuidSeq[9];
- seq_ref.Leak()->fMs4[7] = uuidSeq[10];
+ seq_ref.Leak()->fUuid.fMs1 = uuidSeq[0];
+ seq_ref.Leak()->fUuid.fMs2 = uuidSeq[1];
+ seq_ref.Leak()->fUuid.fMs3 = uuidSeq[2];
+ seq_ref.Leak()->fUuid.fMs4[0] = uuidSeq[3];
+ seq_ref.Leak()->fUuid.fMs4[1] = uuidSeq[4];
+ seq_ref.Leak()->fUuid.fMs4[2] = uuidSeq[5];
+ seq_ref.Leak()->fUuid.fMs4[3] = uuidSeq[6];
+ seq_ref.Leak()->fUuid.fMs4[4] = uuidSeq[7];
+ seq_ref.Leak()->fUuid.fMs4[5] = uuidSeq[8];
+ seq_ref.Leak()->fUuid.fMs4[6] = uuidSeq[9];
+ seq_ref.Leak()->fUuid.fMs4[7] = uuidSeq[10];
return seq_ref;
}
@@ -49,17 +49,17 @@ namespace CF::XRN::Version1
for (SizeT index = 0; index < 16; ++index)
{
- buf[index] = seq.Leak()->u8[index] + kUUIDAsciiBegin;
+ buf[index] = seq.Leak()->fU8[index] + kUUIDAsciiBegin;
}
for (SizeT index = 16; index < 24; ++index)
{
- buf[index] = seq.Leak()->u16[index] + kUUIDAsciiBegin;
+ buf[index] = seq.Leak()->fU16[index] + kUUIDAsciiBegin;
}
for (SizeT index = 24; index < 28; ++index)
{
- buf[index] = seq.Leak()->u32[index] + kUUIDAsciiBegin;
+ buf[index] = seq.Leak()->fU32[index] + kUUIDAsciiBegin;
}
auto view = KStringBuilder::Construct(buf);
diff --git a/dev/kernel/src/HardwareThreadScheduler.cc b/dev/kernel/src/HardwareThreadScheduler.cc
index 55afeba1..96c80c77 100644
--- a/dev/kernel/src/HardwareThreadScheduler.cc
+++ b/dev/kernel/src/HardwareThreadScheduler.cc
@@ -87,7 +87,7 @@ namespace Kernel
return this->fStack;
}
- Void HardwareThread::Busy(const Bool busy) noexcept
+ Void HardwareThread::Busy(Bool busy) noexcept
{
this->fBusy = busy;
}
@@ -174,7 +174,7 @@ namespace Kernel
* @return the reference to the hardware thread.
*/
/***********************************************************************************/
- Ref<HardwareThread*> HardwareThreadScheduler::operator[](const SizeT& idx)
+ Ref<HardwareThread*> HardwareThreadScheduler::operator[](SizeT idx)
{
if (idx == 0)
{
diff --git a/dev/kernel/src/IndexableProperty.cc b/dev/kernel/src/IndexableProperty.cc
index e6facc5f..d586398d 100644
--- a/dev/kernel/src/IndexableProperty.cc
+++ b/dev/kernel/src/IndexableProperty.cc
@@ -50,7 +50,7 @@ namespace Kernel
indexer.AddFlag(kIndexerClaimed);
rt_copy_memory((VoidPtr)indexer.Leak().Path, (VoidPtr)filename, filenameLen);
- kout << "FSKit: Indexed new file: " << filename << kendl;
+ (void)(kout << "FSKit: Indexed new file: " << filename << kendl);
}
}
} // namespace Indexer
diff --git a/dev/kernel/src/KString.cc b/dev/kernel/src/KString.cc
index 9c99eff7..c1a8db65 100644
--- a/dev/kernel/src/KString.cc
+++ b/dev/kernel/src/KString.cc
@@ -100,7 +100,7 @@ namespace Kernel
return ("?");
const Char* boolean_expr = i ? "YES" : "NO";
- Char* ret = (Char*)RTL_ALLOCA((sizeof(char) * i) ? 4 : 5 + rt_string_len(fmt));
+ Char* ret = (Char*)RTL_ALLOCA(rt_string_len(boolean_expr) + rt_string_len(fmt));
if (!ret)
return ("?");
diff --git a/dev/kernel/src/KernelProcessScheduler.cc b/dev/kernel/src/KernelProcessScheduler.cc
index 58137545..a1185a91 100644
--- a/dev/kernel/src/KernelProcessScheduler.cc
+++ b/dev/kernel/src/KernelProcessScheduler.cc
@@ -17,10 +17,4 @@
namespace Kernel
{
- /***********************************************************************************/
- /// @brief Exit Code global variable.
- /***********************************************************************************/
-
- STATIC UInt32 kLastExitCode = 0U;
-
} // namespace Kernel \ No newline at end of file
diff --git a/dev/kernel/src/MemoryMgr.cc b/dev/kernel/src/MemoryMgr.cc
index 5c483ed5..8020ca1c 100644
--- a/dev/kernel/src/MemoryMgr.cc
+++ b/dev/kernel/src/MemoryMgr.cc
@@ -82,7 +82,7 @@ namespace Kernel
if (!heap_ptr)
return false;
- auto base_heap = ((IntPtr)heap_ptr) - sizeof(Detail::MM_INFORMATION_BLOCK);
+ IntPtr base_heap = ((IntPtr)heap_ptr) - sizeof(Detail::MM_INFORMATION_BLOCK);
/// Add that check in case we're having an integer underflow. ///
@@ -120,7 +120,7 @@ namespace Kernel
/// @param wr Read Write bit.
/// @param user User enable bit.
/// @return The newly allocated pointer.
- _Output VoidPtr mm_new_heap(const SizeT sz, const Bool wr, const Bool user, const SizeT pad_amount)
+ _Output VoidPtr mm_new_heap(SizeT sz, Bool wr, Bool user, SizeT pad_amount)
{
auto sz_fix = sz;
@@ -150,7 +150,7 @@ namespace Kernel
auto result = reinterpret_cast<VoidPtr>(heap_info_ptr->fOffset);
- kout << "Registered heap address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl;
+ (void)(kout << "Registered heap address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl);
return result;
}
@@ -172,7 +172,7 @@ namespace Kernel
heap_info_ptr->fPage = true;
- kout << "Registered page address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl;
+ (void)(kout << "Registered page address: " << hex_number(reinterpret_cast<UIntPtr>(heap_info_ptr)) << kendl);
return kErrorSuccess;
}
@@ -239,7 +239,7 @@ namespace Kernel
heap_info_ptr->fMagic = 0;
heap_info_ptr->fPad = 0;
- kout << "Address has been successfully freed: " << hex_number((UIntPtr)heap_info_ptr) << kendl;
+ (void)(kout << "Address has been successfully freed: " << hex_number((UIntPtr)heap_info_ptr) << kendl);
PTEWrapper page_wrapper(No, No, No, reinterpret_cast<UIntPtr>(heap_info_ptr) - sizeof(Detail::MM_INFORMATION_BLOCK));
Ref<PTEWrapper> pte_address{page_wrapper};
diff --git a/dev/kernel/src/New+Delete.cc b/dev/kernel/src/New+Delete.cc
index 7e8f75ba..d0abb20d 100644
--- a/dev/kernel/src/New+Delete.cc
+++ b/dev/kernel/src/New+Delete.cc
@@ -48,3 +48,13 @@ void operator delete(void* ptr, size_t sz)
Kernel::mm_delete_heap(ptr);
}
+
+void operator delete[](void* ptr, size_t sz)
+{
+ if (ptr == nullptr)
+ return;
+
+ NE_UNUSED(sz);
+
+ Kernel::mm_delete_heap(ptr);
+}
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc
index 53f45113..668dd916 100644
--- a/dev/kernel/src/PEFCodeMgr.cc
+++ b/dev/kernel/src/PEFCodeMgr.cc
@@ -59,7 +59,7 @@ namespace Kernel
/// @param path the filesystem path.
/***********************************************************************************/
PEFLoader::PEFLoader(const Char* path)
- : fCachedBlob(nullptr), fBad(false), fFatBinary(false)
+ : fCachedBlob(nullptr), fFatBinary(false), fBad(false)
{
fFile.New(const_cast<Char*>(path), kRestrictRB);
fPath = KStringBuilder::Construct(path).Leak();
diff --git a/dev/kernel/src/PageMgr.cc b/dev/kernel/src/PageMgr.cc
index 4a0c2ef5..8778a855 100644
--- a/dev/kernel/src/PageMgr.cc
+++ b/dev/kernel/src/PageMgr.cc
@@ -78,7 +78,7 @@ namespace Kernel
/// @brief Virtual PTE address.
/// @return The virtual address of the page.
- const UIntPtr PTEWrapper::VirtualAddress()
+ UIntPtr PTEWrapper::VirtualAddress()
{
return (fVirtAddr);
}
diff --git a/dev/kernel/src/SoftwareTimer.cc b/dev/kernel/src/SoftwareTimer.cc
index 06e71b9e..35d9c6f1 100644
--- a/dev/kernel/src/SoftwareTimer.cc
+++ b/dev/kernel/src/SoftwareTimer.cc
@@ -13,7 +13,7 @@ using namespace Kernel;
SoftwareTimer::SoftwareTimer(Int64 seconds)
: fWaitFor(seconds)
{
- fDigitalTimer = new IntPtr();
+ fDigitalTimer = new UIntPtr();
MUST_PASS(fDigitalTimer);
}
diff --git a/dev/kernel/src/Swap/DiskSwap.cc b/dev/kernel/src/Swap/DiskSwap.cc
index eedfa62c..1650a5af 100644
--- a/dev/kernel/src/Swap/DiskSwap.cc
+++ b/dev/kernel/src/Swap/DiskSwap.cc
@@ -16,7 +16,7 @@ namespace Kernel
/// @param data the data packet.
/// @return Whether the swap was written to disk, or not.
/***********************************************************************************/
- BOOL SwapDiskInterface::Write(const Char* fork_name, const SizeT fork_name_len, SWAP_DISK_HEADER* data)
+ BOOL SwapDiskInterface::Write(const Char* fork_name, SizeT fork_name_len, SWAP_DISK_HEADER* data)
{
if (!fork_name || !fork_name_len)
return NO;
@@ -44,7 +44,7 @@ namespace Kernel
/// @param data the data packet length.
/// @return Whether the swap was fetched to disk, or not.
/***********************************************************************************/
- SWAP_DISK_HEADER* SwapDiskInterface::Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len)
+ SWAP_DISK_HEADER* SwapDiskInterface::Read(const Char* fork_name, SizeT fork_name_len, SizeT data_len)
{
if (!fork_name || !fork_name_len)
return nullptr;
diff --git a/dev/kernel/src/ThreadLocalStorage.cc b/dev/kernel/src/ThreadLocalStorage.cc
index 79d2ef5f..a6c12142 100644
--- a/dev/kernel/src/ThreadLocalStorage.cc
+++ b/dev/kernel/src/ThreadLocalStorage.cc
@@ -33,7 +33,7 @@ Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* tib_ptr)
return false;
ICodec encoder;
- const Char* tib_as_bytes = encoder.AsBytes(tib_ptr);
+ const Char* tib_as_bytes = encoder.AsBytes<THREAD_INFORMATION_BLOCK*>(tib_ptr);
kout << "TLS: Validating the TIB...\r";
diff --git a/dev/kernel/src/User.cc b/dev/kernel/src/User.cc
index e379eed9..d29ed112 100644
--- a/dev/kernel/src/User.cc
+++ b/dev/kernel/src/User.cc
@@ -31,7 +31,7 @@ namespace Kernel
/// \param password password to hash.
/// \return the hashed password
////////////////////////////////////////////////////////////
- const Int32 cred_construct_token(Char* password, const Char* in_password, User* user, SizeT length)
+ Int32 cred_construct_token(Char* password, const Char* in_password, User* user, SizeT length)
{
if (!password || !user)
return 1;
@@ -40,7 +40,7 @@ namespace Kernel
for (SizeT i_pass = 0UL; i_pass < length; ++i_pass)
{
- const Char cur_chr = in_password[i_pass];
+ Char cur_chr = in_password[i_pass];
if (cur_chr == 0)
break;
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index da8553ba..56b41436 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -58,7 +58,7 @@ namespace Kernel
if (this->Status != ProcessStatusKind::kRunning)
return;
- kout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << kendl;
+ (void)(kout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << kendl);
this->Exit(kErrorProcessFault);
}
@@ -96,7 +96,7 @@ namespace Kernel
/// @param should_wakeup if the program shall wakeup or not.
/***********************************************************************************/
- Void UserProcess::Wake(const Bool should_wakeup)
+ Void UserProcess::Wake(Bool should_wakeup)
{
this->Status =
should_wakeup ? ProcessStatusKind::kRunning : ProcessStatusKind::kFrozen;
@@ -106,7 +106,7 @@ namespace Kernel
/** @brief Allocate pointer to track list. */
/***********************************************************************************/
- ErrorOr<VoidPtr> UserProcess::New(const SizeT& sz, const SizeT& pad_amount)
+ ErrorOr<VoidPtr> UserProcess::New(SizeT sz, SizeT pad_amount)
{
#ifdef __NE_VIRTUAL_MEMORY_SUPPORT__
auto vm_register = hal_read_cr3();
@@ -134,14 +134,12 @@ namespace Kernel
else
{
ProcessMemoryHeapList* entry = this->ProcessMemoryHeap;
- ProcessMemoryHeapList* prev_entry = nullptr;
while (entry)
{
if (entry->MemoryEntry == nullptr)
break; // chose to break here, when we get an already allocated memory entry for our needs.
- prev_entry = entry;
entry = entry->MemoryNext;
}
@@ -341,9 +339,10 @@ namespace Kernel
case UserProcess::kExectuableDylibKind: {
process.DylibDelegate = rtl_init_dylib(process);
MUST_PASS(process.DylibDelegate);
+ break;
}
default: {
- kout << "Unknown process kind: " << hex_number(process.Kind) << kendl;
+ (void)(kout << "Unknown process kind: " << hex_number(process.Kind) << kendl);
break;
}
}
@@ -371,8 +370,8 @@ namespace Kernel
process.Status = ProcessStatusKind::kStarting;
process.PTime = (UIntPtr)AffinityKind::kStandard;
- kout << "PID: " << number(process.ProcessId) << kendl;
- kout << "Name: " << process.Name << kendl;
+ (void)(kout << "PID: " << number(process.ProcessId) << kendl);
+ (void)(kout << "Name: " << process.Name << kendl);
return pid;
}
@@ -395,34 +394,28 @@ namespace Kernel
/***********************************************************************************/
- const Bool UserProcessScheduler::Remove(ProcessID process_id)
+ Void UserProcessScheduler::Remove(ProcessID process_id)
{
- // check if process is within range.
- if (process_id > mTeam.mProcessList.Count())
- return No;
-
mTeam.mProcessList[process_id].Exit(0);
-
- return Yes;
}
/// @brief Is it a user scheduler?
- const Bool UserProcessScheduler::IsUser()
+ Bool UserProcessScheduler::IsUser()
{
return Yes;
}
/// @brief Is it a kernel scheduler?
- const Bool UserProcessScheduler::IsKernel()
+ Bool UserProcessScheduler::IsKernel()
{
return No;
}
/// @brief Is it a SMP scheduler?
- const Bool UserProcessScheduler::HasMP()
+ Bool UserProcessScheduler::HasMP()
{
return Yes;
}
@@ -432,7 +425,7 @@ namespace Kernel
/// @return Process count executed within a team.
/***********************************************************************************/
- const SizeT UserProcessScheduler::Run() noexcept
+ SizeT UserProcessScheduler::Run() noexcept
{
SizeT process_index = 0UL; //! we store this guy to tell the scheduler how many
//! things we have scheduled.
@@ -551,7 +544,7 @@ namespace Kernel
*/
/***********************************************************************************/
- Bool UserProcessHelper::Switch(VoidPtr image, UInt8* stack, HAL::StackFramePtr frame_ptr, const PID& new_pid)
+ Bool UserProcessHelper::Switch(VoidPtr image, UInt8* stack, HAL::StackFramePtr frame_ptr, PID new_pid)
{
for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Capacity(); ++index)
{
@@ -567,12 +560,9 @@ namespace Kernel
if (HardwareThreadScheduler::The()[index].Leak()->Switch(image, stack, frame_ptr, new_pid))
{
- PTime prev_ptime = HardwareThreadScheduler::The()[index].Leak()->fPTime;
-
HardwareThreadScheduler::The()[index].Leak()->fPTime = UserProcessScheduler::The().CurrentTeam().AsArray()[new_pid].PTime;
- PID prev_pid = UserProcessHelper::TheCurrentPID();
- UserProcessHelper::TheCurrentPID().Leak().Leak() = new_pid;
+ UserProcessHelper::TheCurrentPID().Leak().Leak() = UserProcessHelper::TheCurrentPID();
return YES;
}
diff --git a/dev/kernel/src/Utils.cc b/dev/kernel/src/Utils.cc
index 265c2b1d..f5e61ddf 100644
--- a/dev/kernel/src/Utils.cc
+++ b/dev/kernel/src/Utils.cc
@@ -160,7 +160,7 @@ namespace Kernel
Char rt_to_char(UInt64 base, Int32 limit)
{
- const Char kNumbers[17] = "0123456789ABCDEF";
+ Char kNumbers[17] = "0123456789ABCDEF";
return kNumbers[base % limit];
}
@@ -198,7 +198,7 @@ namespace Kernel
/// @brief Checks for a string start at the character.
- Char* rt_string_has_char(Char* str, const Char chr)
+ Char* rt_string_has_char(Char* str, Char chr)
{
while (*str != chr)
{