From df6d5b3b168d46ba0a5035cf81b375d5981d08f8 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Fri, 10 Feb 2023 17:46:21 -0800 Subject: [PATCH] [debugging] Fix gdb script koid refs & panic CPU display Two minor debugging helpers: - the GDB script was still referencing m_koid on objects, switched to the replacement m_obj_id instead. - finally gave in and made panic print 1-based CPU ids like GDB uses instead of 0-based like the hardware and LITERALLY EVERYTHING ELSE --- assets/debugging/jsix.elf-gdb.py | 10 +++++----- src/kernel/panic.serial/display.cpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/assets/debugging/jsix.elf-gdb.py b/assets/debugging/jsix.elf-gdb.py index 944dd72..73e5238 100644 --- a/assets/debugging/jsix.elf-gdb.py +++ b/assets/debugging/jsix.elf-gdb.py @@ -168,12 +168,12 @@ class GetThreadsCommand(gdb.Command): rsp = int(gdb.parse_and_eval(f"{tcb}->rsp")) pri = int(gdb.parse_and_eval(f"{tcb}->priority")) flags = int(gdb.parse_and_eval(f"{thread}->m_state")) - koid = int(gdb.parse_and_eval(f"{thread}->m_koid")) - proc = int(gdb.parse_and_eval(f"{thread}->m_parent.m_koid")) + koid = int(gdb.parse_and_eval(f"{thread}->m_obj_id")) + proc = int(gdb.parse_and_eval(f"{thread}->m_parent.m_obj_id")) creator = int(gdb.parse_and_eval(f"{thread}->m_creator")) if creator != 0: - creator_koid = int(gdb.parse_and_eval(f"{thread}->m_creator->m_koid")) + creator_koid = int(gdb.parse_and_eval(f"{thread}->m_creator->m_obj_id")) creator = f"{creator_koid:x}" else: creator = "" @@ -236,7 +236,7 @@ class GetThreadsCommand(gdb.Command): if previous != 0: tcb = f"((TCB*){previous:#x})" thread = f"({tcb}->thread)" - koid = int(gdb.parse_and_eval(f"{thread}->m_koid")) + koid = int(gdb.parse_and_eval(f"{thread}->m_obj_id")) print(f" prev: {koid:x}") print() @@ -307,7 +307,7 @@ class CapTablePrinter: refcount = int(node["holders"]), caps = int(node["caps"]), type = str(node["type"])[14:], - koid = node['object']['m_koid'])) + koid = node['object']['m_obj_id'])) self.nodes.sort(key=lambda n: n.id, reverse=True) diff --git a/src/kernel/panic.serial/display.cpp b/src/kernel/panic.serial/display.cpp index 7568530..5c7a90b 100644 --- a/src/kernel/panic.serial/display.cpp +++ b/src/kernel/panic.serial/display.cpp @@ -38,7 +38,7 @@ print_cpu(serial_port &out, cpu_data &cpu) { out.write("\n \e[0;31m==[ CPU: "); char cpuid[7]; - util::format({cpuid, sizeof(cpuid)}, "%4x", cpu.id); + util::format({cpuid, sizeof(cpuid)}, "%4d", cpu.id + 1); // gdb uses 1-based CPU indices out.write(cpuid); out.write(" ]====================================================================\n"); }