Syscall debugging helper
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 14 May 2014 22:13:21 +0000 (15:13 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 14 May 2014 22:13:21 +0000 (15:13 -0700)
Kfunc this from the monitor.  Helps when you want to know details about
a kthread sleeping on a semaphore.  If the process dies or the syscall
completes while you run this, you'll get garbage and might fault.

kern/src/syscall.c

index 9b33390..e99b292 100644 (file)
@@ -2146,3 +2146,13 @@ bool syscall_uses_fd(struct syscall *sysc, int fd)
                        return FALSE;
        }
 }
+
+void print_sysc(struct proc *p, struct syscall *sysc)
+{
+       struct proc *old_p = switch_to(p);
+       printk("SYS_%d, flags %p, a0 0x%x, a1 0x%0x, a2 0x%0x, a3 0x%0x, "
+              "a4 0x%0x, a5 0x%0x\n", sysc->num, atomic_read(&sysc->flags),
+              sysc->arg0, sysc->arg1, sysc->arg2, sysc->arg3, sysc->arg4,
+              sysc->arg5);
+       switch_back(p, old_p);
+}