* 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.
This commit is contained in:
Christopher Faylor
2004-03-30 21:27:50 +00:00
parent cacc0d4421
commit c83bdbf65e
3 changed files with 20 additions and 6 deletions

View File

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