root/gc/include/private/solaris_threads.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. GC_thread

   1 #ifdef GC_SOLARIS_THREADS
   2 
   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       */
   6 /* data structure.                                                     */
   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;
  13     thread_t id;
  14     word flags;
  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.    */
  21     ptr_t stack;
  22     size_t stack_size;
  23     cond_t join_cv;
  24     void * status;
  25   } * GC_thread;
  26   extern GC_thread GC_new_thread(thread_t id);
  27 
  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);
  35 
  36 # endif /* GC_SOLARIS_THREADS */
  37 

/* [<][>][^][v][top][bottom][index][help] */