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);