diff options
Diffstat (limited to 'dev/kernel')
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) { |
