Fix GC_CreateThread and GC_beginthreadex definition for Cygwin
authorIvan Maidanski <ivmai@mail.ru>
Tue, 9 Oct 2012 18:20:48 +0000 (22:20 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 9 Oct 2012 18:20:48 +0000 (22:20 +0400)
* win32_threads.c (CreateThread, ExitThread, _beginthreadex,
_endthreadex): Undefine unconditionally (because the original function
might be used even for GC_PTHREADS targets).
* win32_threads.c (GC_beginthreadex, GC_endthreadex): Do not define
on Cygwin because the latter does not provide _beginthreadex and
_endthreadex.

win32_threads.c

index eebc0ea..aa239b2 100644 (file)
   GC_INNER unsigned long GC_lock_holder = NO_THREAD;
 #endif
 
+#undef CreateThread
+#undef ExitThread
+#undef _beginthreadex
+#undef _endthreadex
+
 #ifdef GC_PTHREADS
 # include <errno.h> /* for EAGAIN */
 
 
 #else
 
-# undef CreateThread
-# undef ExitThread
-# undef _beginthreadex
-# undef _endthreadex
-
 # ifdef MSWINCE
     /* Force DONT_USE_SIGNALANDWAIT implementation of PARALLEL_MARK     */
     /* for WinCE (since Win32 SignalObjectAndWait() is missing).        */
@@ -2239,7 +2239,7 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
     ExitThread(dwExitCode);
   }
 
-# ifndef MSWINCE
+# if !defined(MSWINCE) && !defined(CYGWIN32)
 
     GC_API GC_uintptr_t GC_CALL GC_beginthreadex(
                                   void *security, unsigned stack_size,
@@ -2293,7 +2293,7 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
       _endthreadex(retval);
     }
 
-# endif /* !MSWINCE */
+# endif /* !MSWINCE && !CYGWIN32 */
 
 #ifdef GC_WINMAIN_REDIRECT
   /* This might be useful on WinCE.  Shouldn't be used with GC_DLL.     */