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 */