Upgrade Boehm GC to 7.2alpha4.
[cacao.git] / src / mm / boehm-gc / include / gc_pthread_redirects.h
index 8925c852e7ac726f2e36c77ca3ba2a23f2fec12a..7e1162b62139bfb28f9cb3f454f37399f8db0b6c 100644 (file)
@@ -1,62 +1,71 @@
-/* Our pthread support normally needs to intercept a number of thread  */
-/* calls.  We arrange to do that here, if appropriate.                 */
+/*
+ * Copyright (c) 1994 by Xerox Corporation.  All rights reserved.
+ * Copyright (c) 1996 by Silicon Graphics.  All rights reserved.
+ * Copyright (c) 1998 by Fergus Henderson.  All rights reserved.
+ * Copyright (c) 2000-2009 by Hewlett-Packard Development Company.
+ * All rights reserved.
+ *
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
+ * OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
+ *
+ * Permission is hereby granted to use or copy this program
+ * for any purpose,  provided the above notices are retained on all copies.
+ * Permission to modify the code and to distribute modified code is granted,
+ * provided the above notices are retained, and a notice that the code was
+ * modified is included with the above copyright notice.
+ */
 
-#ifndef GC_PTHREAD_REDIRECTS_H
+/* Our pthread support normally needs to intercept a number of thread   */
+/* calls.  We arrange to do that here, if appropriate.                  */
 
-#define GC_PTHREAD_REDIRECTS_H
+/* Included from gc.h only.  Included only if GC_PTHREADS.              */
 
-#if !defined(GC_USE_LD_WRAP) && defined(GC_PTHREADS)
-/* We need to intercept calls to many of the threads primitives, so     */
-/* that we can locate thread stacks and stop the world.                  */
-/* Note also that the collector cannot always see thread specific data.  */
-/* Thread specific data should generally consist of pointers to          */
-/* uncollectable objects (allocated with GC_malloc_uncollectable,        */
-/* not the system malloc), which are deallocated using the destructor    */
-/* facility in thr_keycreate.  Alternatively, keep a redundant pointer   */
-/* to thread specific data on the thread stack.                         */
+/* We need to intercept calls to many of the threads primitives, so     */
+/* that we can locate thread stacks and stop the world.                 */
+/* Note also that the collector cannot always see thread specific data. */
+/* Thread specific data should generally consist of pointers to         */
+/* uncollectable objects (allocated with GC_malloc_uncollectable,       */
+/* not the system malloc), which are deallocated using the destructor   */
+/* facility in thr_keycreate.  Alternatively, keep a redundant pointer  */
+/* to thread specific data on the thread stack.                         */
 
-# include <pthread.h>
+#include <pthread.h>
+
+#ifndef GC_DARWIN_THREADS
 # include <signal.h>
+# include <dlfcn.h>
 
-# ifndef GC_DARWIN_THREADS
-#   include <dlfcn.h>
+# ifndef GC_OPENBSD_THREADS
+    GC_API int GC_pthread_sigmask(int /* how */, const sigset_t *,
+                                  sigset_t * /* oset */);
 # endif
-
-  int GC_pthread_create(pthread_t *new_thread,
-                        const pthread_attr_t *attr,
-                       void *(*start_routine)(void *), void *arg);
-#ifndef GC_DARWIN_THREADS
-    int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
-    void *GC_dlopen(const char *path, int mode);
+  GC_API void *GC_dlopen(const char * /* path */, int /* mode */);
 #endif
-  int GC_pthread_join(pthread_t thread, void **retval);
-  int GC_pthread_detach(pthread_t thread);
-
-#if defined(GC_OSF1_THREADS) \
-    && defined(_PTHREAD_USE_MANGLED_NAMES_) && !defined(_PTHREAD_USE_PTDNAM_)
-/* Unless the compiler supports #pragma extern_prefix, the Tru64 UNIX
-   <pthread.h> redefines some POSIX thread functions to use mangled names.
-   If so, undef them before redefining. */
+
+GC_API int GC_pthread_create(pthread_t *, const pthread_attr_t *,
+                             void *(*)(void *), void * /* arg */);
+GC_API int GC_pthread_join(pthread_t, void ** /* retval */);
+GC_API int GC_pthread_detach(pthread_t);
+
+#if !defined(GC_NO_THREAD_REDIRECTS) && !defined(GC_USE_LD_WRAP)
+  /* Unless the compiler supports #pragma extern_prefix, the Tru64    */
+  /* UNIX <pthread.h> redefines some POSIX thread functions to use    */
+  /* mangled names.  Anyway, it's safe to undef them before           */
+  /* redefining.                                                      */
 # undef pthread_create
 # undef pthread_join
 # undef pthread_detach
-#endif
 
 # define pthread_create GC_pthread_create
 # define pthread_join GC_pthread_join
 # define pthread_detach GC_pthread_detach
 
-#ifndef GC_DARWIN_THREADS
-# ifdef pthread_sigmask
-#  undef pthread_sigmask
-# endif         /* pthread_sigmask */
-# define pthread_sigmask GC_pthread_sigmask
-# ifdef dlopen
-#  undef dlopen
+# ifndef GC_DARWIN_THREADS
+#   ifndef GC_OPENBSD_THREADS
+#     undef pthread_sigmask
+#     define pthread_sigmask GC_pthread_sigmask
+#   endif
+#   undef dlopen
+#   define dlopen GC_dlopen
 # endif
-# define dlopen GC_dlopen
-#endif
-
-#endif /* GC_PTHREADS && !GC_USE_LD_WRAP */
-
-#endif /* GC_PTHREAD_REDIRECTS_H */
+#endif /* !GC_NO_THREAD_REDIRECTS */