* 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

@ -1,3 +1,12 @@
2004-03-30 Thomas Pfaff <tpfaff@gmx.net>
* 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.
2004-03-30 Corinna Vinschen <corinna@vinschen.de>
* shm.cc (shmat): If shmid is unknown, call a special variation

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;

View File

@ -373,7 +373,7 @@ public:
pthread ();
virtual ~pthread ();
static void init_mainthread ();
static void init_mainthread (const bool forked = false);
static bool is_good_object(pthread_t const *);
static void atforkprepare();
static void atforkparent();