OSDN Git Service

* thread.h (pthread::init_mainthread): Add parameter forked. Set forked
authorcgf <cgf>
Tue, 30 Mar 2004 21:27:50 +0000 (21:27 +0000)
committercgf <cgf>
Tue, 30 Mar 2004 21:27:50 +0000 (21:27 +0000)
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.

winsup/cygwin/ChangeLog
winsup/cygwin/thread.cc
winsup/cygwin/thread.h

index b810576..9227f5c 100644 (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
index a18834d..3652a91 100644 (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;
index 02eac18..ac08cdf 100644 (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();