Module Name: src
Committed By: rmind
Date: Wed Nov 25 13:53:19 UTC 2009
Modified Files:
src/sys/arch/i386/i386: db_trace.c
src/sys/sys: lwp.h
Log Message:
Restore exporting of lwp_getpcb() to userland and fix DDB properly.
While the header might be abstracted better, it is a separate issue.
To generate a diff of this commit:
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/i386/i386/db_trace.c
cvs rdiff -u -r1.125 -r1.126 src/sys/sys/lwp.h
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/i386/i386/db_trace.c
diff -u src/sys/arch/i386/i386/db_trace.c:1.65 src/sys/arch/i386/i386/db_trace.c:1.66
--- src/sys/arch/i386/i386/db_trace.c:1.65 Sat Nov 21 19:59:51 2009
+++ src/sys/arch/i386/i386/db_trace.c Wed Nov 25 13:53:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: db_trace.c,v 1.65 2009/11/21 19:59:51 dsl Exp $ */
+/* $NetBSD: db_trace.c,v 1.66 2009/11/25 13:53:19 rmind Exp $ */
/*
* Mach Operating System
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.65 2009/11/21 19:59:51 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.66 2009/11/25 13:53:19 rmind Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -452,6 +452,7 @@
sizeof(l), (char *)&l);
}
(*pr)("lid %d ", l.l_lid);
+ pcb = lwp_getpcb(&l);
#ifdef _KERNEL
if (l.l_proc == curproc &&
(lwp_t *)lwpaddr == curlwp) {
@@ -461,11 +462,6 @@
} else
#endif
{
-#ifdef _KERNEL
- pcb = lwp_getpcb(&l);
-#else
- pcb = &l.l_addr->u_pcb;
-#endif
db_read_bytes((db_addr_t)&pcb->pcb_ebp,
sizeof(frame), (char *)&frame);
db_read_bytes((db_addr_t)(frame + 1),
Index: src/sys/sys/lwp.h
diff -u src/sys/sys/lwp.h:1.125 src/sys/sys/lwp.h:1.126
--- src/sys/sys/lwp.h:1.125 Sat Nov 21 19:54:49 2009
+++ src/sys/sys/lwp.h Wed Nov 25 13:53:19 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: lwp.h,v 1.125 2009/11/21 19:54:49 dsl Exp $ */
+/* $NetBSD: lwp.h,v 1.126 2009/11/25 13:53:19 rmind Exp $ */
/*-
* Copyright (c) 2001, 2006, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -197,6 +197,13 @@
#define UAREA_TO_USER(uarea) ((struct user *)((uarea) + UAREA_USER_OFFSET))
#endif /* !defined(UAREA_TO_USER) */
+static inline void *
+lwp_getpcb(struct lwp *l)
+{
+
+ return &l->l_addr->u_pcb;
+}
+
LIST_HEAD(lwplist, lwp); /* a list of LWPs */
#ifdef _KERNEL
@@ -391,13 +398,6 @@
return MAX(l->l_inheritedprio, pri);
}
-static inline struct pcb *
-lwp_getpcb(lwp_t *l)
-{
-
- return &l->l_addr->u_pcb;
-}
-
int lwp_create(lwp_t *, struct proc *, vaddr_t, int,
void *, size_t, void (*)(void *), void *, lwp_t **, int);