Module Name: src Committed By: explorer Date: Thu Mar 25 01:15:00 UTC 2010
Modified Files: src/lib/libpthread: pthread.c Log Message: 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 To generate a diff of this commit: cvs rdiff -u -r1.114 -r1.115 src/lib/libpthread/pthread.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libpthread/pthread.c diff -u src/lib/libpthread/pthread.c:1.114 src/lib/libpthread/pthread.c:1.115 --- src/lib/libpthread/pthread.c:1.114 Wed Mar 24 07:27:22 2010 +++ src/lib/libpthread/pthread.c Thu Mar 25 01:15:00 2010 @@ -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 @@ 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 @@ * 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; }