1 #ifndef __MONO_OS_GC_WRAPPER_H__
2 #define __MONO_OS_GC_WRAPPER_H__
10 # include <winsock2.h>
12 /* libgc specifies this on the command line,
13 * so we must define it ourselfs
15 # define GC_GCJ_SUPPORT
19 * Local allocation is only beneficial if we have __thread
20 * We had to fix a bug with include order in libgc, so only do
21 * it if it is the included one.
24 # if defined(HAVE_KW_THREAD) && defined(USE_INCLUDED_LIBGC) && !defined(__powerpc__)
25 /* The local alloc stuff is in pthread_support.c, but solaris uses solaris_threads.c */
26 /* It is also disabled on solaris/x86 by libgc/configure.in */
27 # if !defined(__sparc__) && !defined(__sun)
28 # define GC_REDIRECT_TO_LOCAL
34 # include <gc/gc_typed.h>
35 # include <gc/gc_mark.h>
36 # include <gc/gc_gcj.h>
37 # elif defined(HAVE_GC_H) || defined(USE_INCLUDED_LIBGC)
39 # include <gc_typed.h>
43 # error have boehm GC without headers, you probably need to install them by hand
46 #if defined(PLATFORM_WIN32)
47 #define CreateThread GC_CreateThread
50 #elif defined(HAVE_SGEN_GC)
52 #if defined(PLATFORM_WIN32)
53 #define CreateThread mono_gc_CreateThread
55 /* pthread function wrappers */
59 int mono_gc_pthread_create (pthread_t
*new_thread
, const pthread_attr_t
*attr
, void *(*start_routine
)(void *), void *arg
);
60 int mono_gc_pthread_join (pthread_t thread
, void **retval
);
61 int mono_gc_pthread_detach (pthread_t thread
);
63 #define pthread_create mono_gc_pthread_create
64 #define pthread_join mono_gc_pthread_join
65 #define pthread_detach mono_gc_pthread_detach
69 #else /* not Boehm and not sgen GC */