1
#ifdef GC_SOLARIS_THREADS
3
/* The set of all known threads. We intercept thread creation and */
4
/* joins. We never actually create detached threads. We allocate all */
5
/* new thread stacks ourselves. These allow us to maintain this */
7
/* Protected by GC_thr_lock. */
8
/* Some of this should be declared volatile, but that's incosnsistent */
9
/* with some library routine declarations. In particular, the */
10
/* definition of cond_t doesn't mention volatile! */
11
typedef struct GC_Thread_Rep {
12
struct GC_Thread_Rep * next;
15
# define FINISHED 1 /* Thread has exited. */
16
# define DETACHED 2 /* Thread is intended to be detached. */
17
# define CLIENT_OWNS_STACK 4
18
/* Stack was supplied by client. */
19
# define SUSPNDED 8 /* Currently suspended. */
20
/* SUSPENDED is used insystem header. */
26
extern GC_thread GC_new_thread(thread_t id);
28
extern GC_bool GC_thr_initialized;
29
extern volatile GC_thread GC_threads[];
30
extern size_t GC_min_stack_sz;
31
extern size_t GC_page_sz;
32
extern void GC_thr_init(void);
33
extern ptr_t GC_stack_alloc(size_t * stack_size);
34
extern void GC_stack_free(ptr_t stack, size_t size);
36
# endif /* GC_SOLARIS_THREADS */