summaryrefslogtreecommitdiff
path: root/lib/libpthread/pthread.c
diff options
context:
space:
mode:
authorexplorer <explorer@NetBSD.org>2010-03-25 01:15:00 +0000
committerexplorer <explorer@NetBSD.org>2010-03-25 01:15:00 +0000
commitfc70b598c4a45fa6ff5d3d98c3c06d8ded7bba4d (patch)
tree957a2a223fd39d768cfa5627dc8ba524b3679f68 /lib/libpthread/pthread.c
parentea34e88ea79a64c8277c441e32954fd0ee90fe27 (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.c9
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;
}