OSDN Git Service

* dcrt0.cc (do_exit): Call DisableThreadLibraryCalls since we don't need to
authorcgf <cgf>
Mon, 7 Oct 2002 04:12:53 +0000 (04:12 +0000)
committercgf <cgf>
Mon, 7 Oct 2002 04:12:53 +0000 (04:12 +0000)
track thread detaches.
* init.cc (dll_entry): Reorganize slightly.  Fix api_fatal message.

winsup/cygwin/ChangeLog
winsup/cygwin/dcrt0.cc
winsup/cygwin/init.cc

index cc93104..9c2de0c 100644 (file)
@@ -1,3 +1,9 @@
+2002-10-07  Christopher Faylor  <cgf@redhat.com>
+
+       * dcrt0.cc (do_exit): Call DisableThreadLibraryCalls since we don't
+       need to track thread detaches.
+       * init.cc (dll_entry): Reorganize slightly.  Fix api_fatal message.
+
 2002-10-05  Christopher Faylor  <cgf@redhat.com>
 
        * cygthread.cc (cygthread::stub): Very minor cleanup.
index e3c69a6..4b752cf 100644 (file)
@@ -958,6 +958,10 @@ do_exit (int status)
   UINT n = (UINT) status;
   static int NO_COPY exit_state = 0;
 
+  if (!DisableThreadLibraryCalls (cygwin_hmodule))
+    system_printf ("DisableThreadLibraryCalls (%p) failed, %E",
+                  cygwin_hmodule);
+
   syscall_printf ("do_exit (%d)", n);
 
   vfork_save *vf = vfork_storage.val ();
index 9c942f2..3114293 100644 (file)
@@ -24,26 +24,18 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load)
       cygwin_hmodule = (HMODULE) h;
       dynamically_loaded = (static_load == NULL);
       break;
+    case DLL_PROCESS_DETACH:
+      break;
     case DLL_THREAD_ATTACH:
       if (user_data->threadinterface)
        {
          if (!TlsSetValue (user_data->threadinterface->reent_index,
                            &user_data->threadinterface->reents))
-           api_fatal ("Sig proc MT init failed\n");
+           api_fatal ("thread initialization failed");
        }
       break;
-    case DLL_PROCESS_DETACH:
-      break;
     case DLL_THREAD_DETACH:
-#if 0
-      pthread *thisthread = (pthread *)
-       TlsGetValue (user_data->threadinterface->thread_self_dwTlsIndex);
-      if (thisthread) {
-         /* Some non-pthread call created this thread,
-          * but we need to clean it up */
-         thisthread->exit (0);
-      }
-#endif
+      /* not invoked */;
       break;
     }
   return 1;