diff options
| author | explorer <explorer@NetBSD.org> | 2010-03-25 01:15:00 +0000 |
|---|---|---|
| committer | explorer <explorer@NetBSD.org> | 2010-03-25 01:15:00 +0000 |
| commit | fc70b598c4a45fa6ff5d3d98c3c06d8ded7bba4d (patch) | |
| tree | 957a2a223fd39d768cfa5627dc8ba524b3679f68 /lib/libpthread/pthread.c | |
| parent | ea34e88ea79a64c8277c441e32954fd0ee90fe27 (diff) | |
fix the pthread pt_lid in the fork callback function that runs in the child instead of a function that may be going away. KNFify
Diffstat (limited to 'lib/libpthread/pthread.c')
| -rw-r--r-- | lib/libpthread/pthread.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/libpthread/pthread.c b/lib/libpthread/pthread.c index 61c5e77dffc..0b112c3c3f1 100644 --- a/lib/libpthread/pthread.c +++ b/lib/libpthread/pthread.c @@ -1,4 +1,4 @@ -/* $NetBSD: pthread.c,v 1.114 2010/03/24 07:27:22 explorer Exp $ */ +/* $NetBSD: pthread.c,v 1.115 2010/03/25 01:15:00 explorer Exp $ */ /*- * Copyright (c) 2001, 2002, 2003, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: pthread.c,v 1.114 2010/03/24 07:27:22 explorer Exp $"); +__RCSID("$NetBSD: pthread.c,v 1.115 2010/03/25 01:15:00 explorer Exp $"); #define __EXPOSE_STACK 1 @@ -235,11 +235,14 @@ pthread__init(void) static void pthread__fork_callback(void) { + struct __pthread_st *self; /* lwpctl state is not copied across fork. */ if (_lwp_ctl(LWPCTL_FEATURE_CURCPU, &pthread__first->pt_lwpctl)) { err(1, "_lwp_ctl"); } + self = pthread__self(); + self->pt_lid = _lwp_self(); } static void @@ -256,8 +259,6 @@ pthread__child_callback(void) * much. Anything that permits some pthread_* calls to work is * merely being polite. */ - struct __pthread_st *self = pthread_self(); - self->pt_lid = _lwp_self(); pthread__started = 0; } |
