Module Name:    src
Committed By:   chs
Date:           Wed Jul  7 01:22:35 UTC 2010

Modified Files:
        src/sys/arch/mips/mips: db_trace.c

Log Message:
add "trace/a" to trace by LWP address.


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/mips/mips/db_trace.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/mips/db_trace.c
diff -u src/sys/arch/mips/mips/db_trace.c:1.39 src/sys/arch/mips/mips/db_trace.c:1.40
--- src/sys/arch/mips/mips/db_trace.c:1.39	Thu Jul  1 02:38:27 2010
+++ src/sys/arch/mips/mips/db_trace.c	Wed Jul  7 01:22:35 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_trace.c,v 1.39 2010/07/01 02:38:27 rmind Exp $	*/
+/*	$NetBSD: db_trace.c,v 1.40 2010/07/07 01:22:35 chs Exp $	*/
 
 /*
  * Mach Operating System
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.39 2010/07/01 02:38:27 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.40 2010/07/07 01:22:35 chs Exp $");
 
 #include "opt_ddb.h"
 
@@ -143,6 +143,9 @@
 	struct pcb *pcb;
 	struct proc *p;
 	struct lwp *l;
+	const char *cp = modif;
+	char c;
+	bool lwpaddr = false;
 
 	if (!have_addr) {
 		stacktrace_subr(ddb_regs.f_regs[_R_A0],
@@ -158,14 +161,26 @@
 		return;
 	}
 
-	/* "trace/t" */
-	(*pr)("pid %d ", (int)addr);
-	p = proc_find_raw(addr);
-	if (p == NULL) {
-		(*pr)("not found\n");
-		return;
-	}	
-	l = LIST_FIRST(&p->p_lwps); /* XXX NJWLWP */
+	while ((c = *cp++) != 0) {
+		if (c == 'a') {
+			lwpaddr = true;
+		}
+	}
+
+	if (lwpaddr) {
+		l = (struct lwp *)addr;
+		(*pr)("pid %d.%d ", l->l_proc->p_pid, l->l_lid);
+	} else {
+		/* "trace/t" */
+
+		(*pr)("pid %d ", (int)addr);
+		p = proc_find_raw(addr);
+		if (p == NULL) {
+			(*pr)("not found\n");
+			return;
+		}	
+		l = LIST_FIRST(&p->p_lwps); /* XXX NJWLWP */
+	}
 	pcb = lwp_getpcb(l);
 	(*pr)("at %p\n", pcb);
 

Reply via email to