aboutsummaryrefslogtreecommitdiff
path: root/kernel/proc/kthread.gdb
diff options
context:
space:
mode:
authornthnluu <nate1299@me.com>2024-01-28 21:20:27 -0500
committernthnluu <nate1299@me.com>2024-01-28 21:20:27 -0500
commitc63f340d90800895f007de64b7d2d14624263331 (patch)
tree2c0849fa597dd6da831c8707b6f2603403778d7b /kernel/proc/kthread.gdb
Created student weenix repository
Diffstat (limited to 'kernel/proc/kthread.gdb')
-rw-r--r--kernel/proc/kthread.gdb39
1 files changed, 39 insertions, 0 deletions
diff --git a/kernel/proc/kthread.gdb b/kernel/proc/kthread.gdb
new file mode 100644
index 0000000..9c6e160
--- /dev/null
+++ b/kernel/proc/kthread.gdb
@@ -0,0 +1,39 @@
+define kstack
+ if $argc == 0
+ set $kthr = curthr
+ else
+ set $kthr = $arg0
+ end
+
+ set $save_eip = $eip
+ set $save_ebp = $ebp
+ set $save_esp = $esp
+
+ if ($kthr == curthr) && (_intr_regs != NULL)
+ set $eip = _intr_regs->r_eip
+ set $ebp = _intr_regs->r_ebp
+ set $esp = _intr_regs->r_esp
+ info stack
+ else if $kthr != curthr
+ set $eip = $kthr->kt_ctx.c_eip
+ set $ebp = $kthr->kt_ctx.c_ebp
+ set $esp = $kthr->kt_ctx.c_esp
+ info stack
+ else
+ info stack
+ end
+
+ set $eip = $save_eip
+ set $ebp = $save_ebp
+ set $esp = $save_esp
+end
+document kstack
+usage: kthread [kthread_t*]
+Takes a single, optional kthread_t as an argument.
+If no argument is given curthr is used instead. This
+command prints the current stack of the given thread.
+This includes detecting if the given thread is has
+been interrupted, and looking up the interrupted
+stack, rather than the interrupt stack (useful for
+viewing the stack trace which caused a page-fault).
+end \ No newline at end of file