diff --git a/AK/Debug.h b/AK/Debug.h index 06deb53dd9..da15f12b88 100644 --- a/AK/Debug.h +++ b/AK/Debug.h @@ -129,3 +129,33 @@ constexpr bool debug_vmware_backdoor = true; #else constexpr bool debug_vmware_backdoor = false; #endif + +#ifdef FILEDESCRIPTION_DEBUG +constexpr bool debug_file_description = true; +#else +constexpr bool debug_file_description = false; +#endif + +#ifdef PROCFS_DEBUG +constexpr bool debug_procfs = true; +#else +constexpr bool debug_procfs = false; +#endif + +#ifdef VFS_DEBUG +constexpr bool debug_vfs = true; +#else +constexpr bool debug_vfs = false; +#endif + +#ifdef IOAPIC_DEBUG +constexpr bool debug_ioapic = true; +#else +constexpr bool debug_ioapic = false; +#endif + +#ifdef IRQ_DEBUG +constexpr bool debug_irq = true; +#else +constexpr bool debug_irq = false; +#endif diff --git a/Kernel/Devices/USB/UHCIDescriptorTypes.h b/Kernel/Devices/USB/UHCIDescriptorTypes.h index f09a1dcafc..064398cd64 100644 --- a/Kernel/Devices/USB/UHCIDescriptorTypes.h +++ b/Kernel/Devices/USB/UHCIDescriptorTypes.h @@ -124,7 +124,7 @@ struct alignas(16) TransferDescriptor final { void print() { - // FIXME: Use dbg() or klog() when we have something working. + // FIXME: Use dbgln() or klog() when we have something working. // We're using kprintf() for now because the output stands out from the rest of the text in the log kprintf("UHCI: TD(%p) @ 0x%08x: link_ptr=0x%08x, status=0x%08x, token=0x%08x, buffer_ptr=0x%08x\n", this, m_paddr, m_link_ptr, m_control_status, m_token, m_buffer_ptr); diff --git a/Kernel/FileSystem/FileDescription.cpp b/Kernel/FileSystem/FileDescription.cpp index ac67074c09..96fe39a48d 100644 --- a/Kernel/FileSystem/FileDescription.cpp +++ b/Kernel/FileSystem/FileDescription.cpp @@ -24,6 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -40,8 +41,6 @@ #include #include -//#define FILEDESCRIPTION_DEBUG - namespace Kernel { KResultOr> FileDescription::create(Custody& custody) @@ -50,9 +49,7 @@ KResultOr> FileDescription::create(Custody& custo description->m_custody = custody; auto result = description->attach(); if (result.is_error()) { -#ifdef FILEDESCRIPTION_DEBUG - dbg() << "Failed to create file description for custody: " << result; -#endif + dbgln("Failed to create file description for custody: {}", result); return result; } return description; @@ -63,9 +60,7 @@ KResultOr> FileDescription::create(File& file) auto description = adopt(*new FileDescription(file)); auto result = description->attach(); if (result.is_error()) { -#ifdef FILEDESCRIPTION_DEBUG - dbg() << "Failed to create file description for file: " << result; -#endif + dbgln("Failed to create file description for file: {}", result); return result; } return description; diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index 36dc4ff1c0..0d1d8218c3 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -24,6 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -987,9 +988,7 @@ NonnullRefPtr ProcFS::root_inode() const RefPtr ProcFS::get_inode(InodeIdentifier inode_id) const { -#ifdef PROCFS_DEBUG - dbg() << "ProcFS::get_inode(" << inode_id.index() << ")"; -#endif + dbgln("ProcFS::get_inode({})", inode_id.index()); if (inode_id == root_inode()->identifier()) return m_root_inode; @@ -1102,9 +1101,7 @@ void ProcFSInode::did_seek(FileDescription& description, off_t new_offset) InodeMetadata ProcFSInode::metadata() const { -#ifdef PROCFS_DEBUG - dbg() << "ProcFSInode::metadata(" << index() << ")"; -#endif + dbgln("ProcFSInode::metadata({})", index()); InodeMetadata metadata; metadata.inode = identifier(); metadata.ctime = mepoch; @@ -1113,9 +1110,7 @@ InodeMetadata ProcFSInode::metadata() const auto proc_parent_directory = to_proc_parent_directory(identifier()); auto proc_file_type = to_proc_file_type(identifier()); -#ifdef PROCFS_DEBUG - dbg() << " -> pid: " << to_pid(identifier()).value() << ", fi: " << proc_file_type << ", pdi: " << proc_parent_directory; -#endif + dbgln(" -> pid={}, fi={}, pdi={}", to_pid(identifier()).value(), (int)proc_file_type, (int)proc_parent_directory); if (is_process_related_file(identifier())) { ProcessID pid = to_pid(identifier()); @@ -1180,18 +1175,14 @@ InodeMetadata ProcFSInode::metadata() const ssize_t ProcFSInode::read_bytes(off_t offset, ssize_t count, UserOrKernelBuffer& buffer, FileDescription* description) const { -#ifdef PROCFS_DEBUG - dbg() << "ProcFS: read_bytes offset: " << offset << " count: " << count; -#endif + dbgln("ProcFS: read_bytes offset: {} count: {}", offset, count); ASSERT(offset >= 0); ASSERT(buffer.user_or_kernel_ptr()); if (!description) return -EIO; if (!description->data()) { -#ifdef PROCFS_DEBUG - dbgln("ProcFS: Do not have cached data!"); -#endif + dbgln("ProcFS: Do not have cached data!"); return -EIO; } @@ -1215,9 +1206,7 @@ InodeIdentifier ProcFS::ProcFSDirectoryEntry::identifier(unsigned fsid) const KResult ProcFSInode::traverse_as_directory(Function callback) const { -#ifdef PROCFS_DEBUG - dbg() << "ProcFS: traverse_as_directory " << index(); -#endif + dbgln("ProcFS: traverse_as_directory {}", index()); if (!Kernel::is_directory(identifier())) return ENOTDIR; diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index 6a07171093..25029dc021 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -24,6 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -132,7 +133,7 @@ KResult VFS::unmount(Inode& guest_inode) } } - dbg() << "VFS: Nothing mounted on inode " << guest_inode.identifier(); + dbgln("VFS: Nothing mounted on inode {}", guest_inode.identifier()); return ENODEV; } @@ -401,9 +402,7 @@ KResultOr> VFS::create(StringView path, int optio return EROFS; LexicalPath p(path); -#ifdef VFS_DEBUG - dbg() << "VFS::create: '" << p.basename() << "' in " << parent_inode.identifier(); -#endif + dbgln("VFS::create: '{}' in {}", p.basename(), parent_inode.identifier()); uid_t uid = owner.has_value() ? owner.value().uid : current_process->euid(); gid_t gid = owner.has_value() ? owner.value().gid : current_process->egid(); auto inode_or_error = parent_inode.create_child(p.basename(), mode, 0, uid, gid); @@ -445,9 +444,7 @@ KResult VFS::mkdir(StringView path, mode_t mode, Custody& base) return EROFS; LexicalPath p(path); -#ifdef VFS_DEBUG - dbg() << "VFS::mkdir: '" << p.basename() << "' in " << parent_inode.identifier(); -#endif + dbgln("VFS::mkdir: '{}' in {}", p.basename(), parent_inode.identifier()); return parent_inode.create_child(p.basename(), S_IFDIR | mode, 0, current_process->euid(), current_process->egid()).result(); } diff --git a/Kernel/Interrupts/IOAPIC.cpp b/Kernel/Interrupts/IOAPIC.cpp index ed3a1620d0..ca46c09984 100644 --- a/Kernel/Interrupts/IOAPIC.cpp +++ b/Kernel/Interrupts/IOAPIC.cpp @@ -24,6 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -201,13 +202,14 @@ void IOAPIC::configure_redirection_entry(int index, u8 interrupt_vector, u8 deli u32 redirection_entry1 = interrupt_vector | (delivery_mode & 0b111) << 8 | logical_destination << 11 | active_low << 13 | trigger_level_mode << 15 | masked << 16; u32 redirection_entry2 = destination << 24; write_register((index << 1) + IOAPIC_REDIRECTION_ENTRY_OFFSET, redirection_entry1); -#ifdef IOAPIC_DEBUG - dbg() << "IOAPIC Value: 0x" << String::format("%x", read_register((index << 1) + IOAPIC_REDIRECTION_ENTRY_OFFSET)); -#endif + + if constexpr (debug_ioapic) + dbgln("IOAPIC Value: {:#x}", read_register((index << 1) + IOAPIC_REDIRECTION_ENTRY_OFFSET)); + write_register((index << 1) + IOAPIC_REDIRECTION_ENTRY_OFFSET + 1, redirection_entry2); -#ifdef IOAPIC_DEBUG - dbg() << "IOAPIC Value: 0x" << String::format("%x", read_register((index << 1) + 0x11)); -#endif + + if constexpr (debug_ioapic) + dbgln("IOAPIC Value: {:#x}", read_register((index << 1) + 0x11)); } void IOAPIC::mask_all_redirection_entries() const @@ -319,17 +321,15 @@ void IOAPIC::write_register(u32 index, u32 value) const InterruptDisabler disabler; m_regs->select = index; m_regs->window = value; -#ifdef IOAPIC_DEBUG - dbg() << "IOAPIC Writing, Value 0x" << String::format("%x", m_regs->window) << " @ offset 0x" << String::format("%x", m_regs->select); -#endif + + dbgln("IOAPIC Writing, Value {:#x} @ offset {:#x}", (u32)m_regs->window, (u32)m_regs->select); } u32 IOAPIC::read_register(u32 index) const { InterruptDisabler disabler; m_regs->select = index; -#ifdef IOAPIC_DEBUG - dbg() << "IOAPIC Reading, Value 0x" << String::format("%x", m_regs->window) << " @ offset 0x" << String::format("%x", m_regs->select); -#endif + dbgln("IOAPIC Reading, Value {:#x} @ offset {:#x}", (u32)m_regs->window, (u32)m_regs->select); return m_regs->window; } + } diff --git a/Kernel/Interrupts/IRQHandler.cpp b/Kernel/Interrupts/IRQHandler.cpp index a93e140fe6..658fc0d355 100644 --- a/Kernel/Interrupts/IRQHandler.cpp +++ b/Kernel/Interrupts/IRQHandler.cpp @@ -24,6 +24,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -45,9 +46,7 @@ IRQHandler::~IRQHandler() bool IRQHandler::eoi() { -#ifdef IRQ_DEBUG - dbg() << "EOI IRQ " << interrupt_number(); -#endif + dbgln("EOI IRQ {}", interrupt_number()); if (!m_shared_with_others) { ASSERT(!m_responsible_irq_controller.is_null()); m_responsible_irq_controller->eoi(*this); @@ -58,9 +57,7 @@ bool IRQHandler::eoi() void IRQHandler::enable_irq() { -#ifdef IRQ_DEBUG - dbg() << "Enable IRQ " << interrupt_number(); -#endif + dbgln("Enable IRQ {}", interrupt_number()); m_enabled = true; if (!m_shared_with_others) m_responsible_irq_controller->enable(*this); @@ -68,9 +65,7 @@ void IRQHandler::enable_irq() void IRQHandler::disable_irq() { -#ifdef IRQ_DEBUG - dbg() << "Disable IRQ " << interrupt_number(); -#endif + dbgln("Disable IRQ {}", interrupt_number()); m_enabled = false; if (!m_shared_with_others) m_responsible_irq_controller->disable(*this); diff --git a/Kernel/KResult.h b/Kernel/KResult.h index 48e348b9fa..bc863b821f 100644 --- a/Kernel/KResult.h +++ b/Kernel/KResult.h @@ -177,3 +177,11 @@ private: }; } + +template<> +struct AK::Formatter : Formatter { + void format(FormatBuilder& builder, Kernel::KResult value) + { + return Formatter::format(builder, value); + } +};