Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2004-03-31 01:27:50 +0400
committerChristopher Faylor <me@cgf.cx>2004-03-31 01:27:50 +0400
commitc83bdbf65e589a40b6f01bcdf586e91391013647 (patch)
tree3db2e2f5760ac75e0f2238b65fb8400a052c9495 /winsup/cygwin/thread.cc
parentcacc0d4421219bf48aca9ce3b0e13344c1ed753e (diff)
* thread.h (pthread::init_mainthread): Add parameter forked. Set forked
default to false.. * thread.cc (MTinterface::fixup_after_fork): Call pthread::init_mainthread with forked = true. (pthread::init_mainthread): Add parameter forked. Do not change thread self pointer when forked.
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r--winsup/cygwin/thread.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index a18834ddf..3652a91fa 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -153,7 +153,7 @@ MTinterface::fixup_after_fork (void)
pthread_key::fixup_after_fork ();
threadcount = 0;
- pthread::init_mainthread ();
+ pthread::init_mainthread (true);
pthread::fixup_after_fork ();
pthread_mutex::fixup_after_fork ();
@@ -166,14 +166,19 @@ MTinterface::fixup_after_fork (void)
/* static methods */
void
-pthread::init_mainthread ()
+pthread::init_mainthread (const bool forked)
{
pthread *thread = get_tls_self_pointer ();
if (!thread)
{
- thread = new pthread ();
- if (!thread)
- api_fatal ("failed to create mainthread object");
+ if (forked)
+ thread = pthread_null::get_null_pthread ();
+ else
+ {
+ thread = new pthread ();
+ if (!thread)
+ api_fatal ("failed to create mainthread object");
+ }
}
thread->cygtls = &_my_tls;