Data Structures | Defines | Typedefs | Functions | Variables

thread.c File Reference

#include "eval_intern.h"
#include "gc.h"
Include dependency graph for thread.c:

Go to the source code of this file.

Data Structures

struct  rb_blocking_region_buffer
struct  rb_mutex_struct
struct  join_arg
struct  thgroup
struct  thgroup_list_params
struct  exec_recursive_params
struct  call_trace_func_args

Defines

#define USE_NATIVE_THREAD_PRIORITY   0
#define RUBY_THREAD_PRIORITY_MAX   3
#define RUBY_THREAD_PRIORITY_MIN   -3
#define THREAD_DEBUG   0
#define THREAD_SYSTEM_DEPENDENT_IMPLEMENTATION
#define RB_GC_SAVE_MACHINE_CONTEXT(th)
#define GVL_UNLOCK_BEGIN()
#define GVL_UNLOCK_END()
#define BLOCKING_REGION_CORE(exec)
#define blocking_region_begin(th, region, func, arg)
#define BLOCKING_REGION(exec, ubf, ubfarg)
#define thread_debug   if(0)printf
#define thread_start_func_2(th, st, rst)   thread_start_func_2(th, st)
#define DELAY_INFTY   1E30
#define GetMutexPtr(obj, tobj)   TypedData_Get_Struct(obj, mutex_t, &mutex_data_type, tobj)
#define mutex_mark   NULL
#define GetBarrierPtr(obj)   (VALUE)rb_check_typeddata(obj, &barrier_data_type)
#define rb_intern(str)   rb_intern_const(str)

Typedefs

typedef struct rb_mutex_struct mutex_t

Functions

static void sleep_timeval (rb_thread_t *th, struct timeval time)
static void sleep_wait_for_interrupt (rb_thread_t *th, double sleepsec)
static void sleep_forever (rb_thread_t *th, int nodeadlock)
static double timeofday (void)
struct timeval rb_time_interval (VALUE)
static int rb_threadptr_dead (rb_thread_t *th)
static void rb_check_deadlock (rb_vm_t *vm)
int rb_signal_buff_size (void)
void rb_signal_exec (rb_thread_t *th, int sig)
void rb_disable_interrupt (void)
void rb_thread_stop_timer_thread (void)
static void st_delete_wrap (st_table *table, st_data_t key)
static void set_unblock_function (rb_thread_t *th, rb_unblock_function_t *func, void *arg, struct rb_unblock_callback *old)
static void reset_unblock_function (rb_thread_t *th, const struct rb_unblock_callback *old)
static void blocking_region_end (rb_thread_t *th, struct rb_blocking_region_buffer *region)
 NOINLINE (static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start))
static void timer_thread_function (void *)
void rb_thread_lock_unlock (rb_thread_lock_t *lock)
void rb_thread_lock_destroy (rb_thread_lock_t *lock)
void rb_threadptr_interrupt (rb_thread_t *th)
static int terminate_i (st_data_t key, st_data_t val, rb_thread_t *main_thread)
static void rb_mutex_unlock_all (mutex_t *mutex, rb_thread_t *th)
static void rb_mutex_abandon_all (mutex_t *mutexes)
void rb_thread_terminate_all (void)
static void thread_unlock_all_locking_mutexes (rb_thread_t *th)
static void thread_cleanup_func_before_exec (void *th_ptr)
static void thread_cleanup_func (void *th_ptr)
void ruby_error_print (void)
static VALUE rb_threadptr_raise (rb_thread_t *, int, VALUE *)
void rb_thread_recycle_stack_release (VALUE *)
void ruby_thread_init_stack (rb_thread_t *th)
static int thread_start_func_2 (rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start)
static VALUE thread_create_core (VALUE thval, VALUE args, VALUE(*fn)(ANYARGS))
static VALUE thread_s_new (int argc, VALUE *argv, VALUE klass)
static VALUE thread_start (VALUE klass, VALUE args)
static VALUE thread_initialize (VALUE thread, VALUE args)
VALUE rb_thread_create (VALUE(*fn)(ANYARGS), void *arg)
static VALUE remove_from_join_list (VALUE arg)
static VALUE thread_join_sleep (VALUE arg)
static VALUE thread_join (rb_thread_t *target_th, double delay)
static VALUE thread_join_m (int argc, VALUE *argv, VALUE self)
static VALUE thread_value (VALUE self)
static struct timeval double2timeval (double d)
static void getclockofday (struct timeval *tp)
void rb_thread_sleep_forever (void)
static void rb_thread_sleep_deadly (void)
static void sleep_for_polling (rb_thread_t *th)
void rb_thread_wait_for (struct timeval time)
void rb_thread_polling (void)
void rb_thread_check_ints (void)
int rb_thread_check_trap_pending (void)
int rb_thread_interrupted (VALUE thval)
struct timeval rb_time_timeval (VALUE)
void rb_thread_sleep (int sec)
static void rb_threadptr_execute_interrupts_rec (rb_thread_t *, int)
static void rb_thread_schedule_rec (int sched_depth)
void rb_thread_schedule (void)
struct rb_blocking_region_bufferrb_thread_blocking_region_begin (void)
void rb_thread_blocking_region_end (struct rb_blocking_region_buffer *region)
VALUE rb_thread_blocking_region (rb_blocking_function_t *func, void *data1, rb_unblock_function_t *ubf, void *data2)
VALUE rb_thread_call_without_gvl (rb_blocking_function_t *func, void *data1, rb_unblock_function_t *ubf, void *data2)
void * rb_thread_call_with_gvl (void *(*func)(void *), void *data1)
int ruby_thread_has_gvl_p (void)
static VALUE thread_s_pass (VALUE klass)
void rb_threadptr_execute_interrupts (rb_thread_t *th)
void rb_gc_mark_threads (void)
static void rb_threadptr_ready (rb_thread_t *th)
void rb_threadptr_signal_raise (rb_thread_t *th, int sig)
void rb_threadptr_signal_exit (rb_thread_t *th)
void ruby_thread_stack_overflow (rb_thread_t *th)
int rb_threadptr_set_raised (rb_thread_t *th)
int rb_threadptr_reset_raised (rb_thread_t *th)
void rb_thread_fd_close (int fd)
static VALUE thread_raise_m (int argc, VALUE *argv, VALUE self)
VALUE rb_thread_kill (VALUE thread)
static VALUE rb_thread_s_kill (VALUE obj, VALUE th)
static VALUE rb_thread_exit (void)
VALUE rb_thread_wakeup (VALUE thread)
VALUE rb_thread_run (VALUE thread)
VALUE rb_thread_stop (void)
static int thread_list_i (st_data_t key, st_data_t val, void *data)
VALUE rb_thread_list (void)
VALUE rb_thread_current (void)
static VALUE thread_s_current (VALUE klass)
VALUE rb_thread_main (void)
static VALUE rb_thread_s_main (VALUE klass)
static VALUE rb_thread_s_abort_exc (void)
static VALUE rb_thread_s_abort_exc_set (VALUE self, VALUE val)
static VALUE rb_thread_abort_exc (VALUE thread)
static VALUE rb_thread_abort_exc_set (VALUE thread, VALUE val)
VALUE rb_thread_group (VALUE thread)
static const char * thread_status_name (enum rb_thread_status status)
static VALUE rb_thread_status (VALUE thread)
static VALUE rb_thread_alive_p (VALUE thread)
static VALUE rb_thread_stop_p (VALUE thread)
static VALUE rb_thread_safe_level (VALUE thread)
static VALUE rb_thread_inspect (VALUE thread)
VALUE rb_thread_local_aref (VALUE thread, ID id)
static VALUE rb_thread_aref (VALUE thread, VALUE id)
VALUE rb_thread_local_aset (VALUE thread, ID id, VALUE val)
static VALUE rb_thread_aset (VALUE self, VALUE id, VALUE val)
static VALUE rb_thread_key_p (VALUE self, VALUE key)
static int thread_keys_i (ID key, VALUE value, VALUE ary)
static int vm_living_thread_num (rb_vm_t *vm)
int rb_thread_alone (void)
static VALUE rb_thread_keys (VALUE self)
static VALUE rb_thread_priority (VALUE thread)
static VALUE rb_thread_priority_set (VALUE thread, VALUE prio)
static int do_select (int n, fd_set *read, fd_set *write, fd_set *except, struct timeval *timeout)
static void rb_thread_wait_fd_rw (int fd, int read)
void rb_thread_wait_fd (int fd)
int rb_thread_fd_writable (int fd)
int rb_thread_select (int max, fd_set *read, fd_set *write, fd_set *except, struct timeval *timeout)
int rb_thread_fd_select (int max, rb_fdset_t *read, rb_fdset_t *write, rb_fdset_t *except, struct timeval *timeout)
void rb_gc_set_stack_end (VALUE **stack_end_p)
void rb_gc_save_machine_context (rb_thread_t *th)
int rb_get_next_signal (void)
void rb_threadptr_check_signal (rb_thread_t *mth)
void rb_thread_reset_timer_thread (void)
void rb_thread_start_timer_thread (void)
static int clear_coverage_i (st_data_t key, st_data_t val, st_data_t dummy)
static void clear_coverage (void)
static void rb_thread_atfork_internal (int(*atfork)(st_data_t, st_data_t, st_data_t))
static int terminate_atfork_i (st_data_t key, st_data_t val, st_data_t current_th)
void rb_thread_atfork (void)
static int terminate_atfork_before_exec_i (st_data_t key, st_data_t val, st_data_t current_th)
void rb_thread_atfork_before_exec (void)
static size_t thgroup_memsize (const void *ptr)
static VALUE thgroup_s_alloc (VALUE klass)
static int thgroup_list_i (st_data_t key, st_data_t val, st_data_t data)
static VALUE thgroup_list (VALUE group)
static VALUE thgroup_enclose (VALUE group)
static VALUE thgroup_enclosed_p (VALUE group)
static VALUE thgroup_add (VALUE group, VALUE thread)
static const char * mutex_unlock (mutex_t *mutex, rb_thread_t volatile *th)
static void mutex_free (void *ptr)
static size_t mutex_memsize (const void *ptr)
static VALUE mutex_alloc (VALUE klass)
static VALUE mutex_initialize (VALUE self)
VALUE rb_mutex_new (void)
VALUE rb_mutex_locked_p (VALUE self)
static void mutex_locked (rb_thread_t *th, VALUE self)
VALUE rb_mutex_trylock (VALUE self)
static int lock_func (rb_thread_t *th, mutex_t *mutex, int last_thread)
static void lock_interrupt (void *ptr)
VALUE rb_mutex_lock (VALUE self)
VALUE rb_mutex_unlock (VALUE self)
static VALUE rb_mutex_sleep_forever (VALUE time)
static VALUE rb_mutex_wait_for (VALUE time)
VALUE rb_mutex_sleep (VALUE self, VALUE timeout)
static VALUE mutex_sleep (int argc, VALUE *argv, VALUE self)
VALUE rb_mutex_synchronize (VALUE mutex, VALUE(*func)(VALUE arg), VALUE arg)
static void barrier_mark (void *ptr)
static VALUE barrier_alloc (VALUE klass)
VALUE rb_barrier_new (void)
VALUE rb_barrier_wait (VALUE self)
VALUE rb_barrier_release (VALUE self)
VALUE rb_barrier_destroy (VALUE self)
static VALUE recursive_list_access (void)
static VALUE recursive_check (VALUE list, VALUE obj_id, VALUE paired_obj_id)
static void recursive_push (VALUE list, VALUE obj, VALUE paired_obj)
static void recursive_pop (VALUE list, VALUE obj, VALUE paired_obj)
static VALUE exec_recursive_i (VALUE tag, struct exec_recursive_params *p)
static VALUE exec_recursive (VALUE(*func)(VALUE, VALUE, int), VALUE obj, VALUE pairid, VALUE arg, int outer)
VALUE rb_exec_recursive (VALUE(*func)(VALUE, VALUE, int), VALUE obj, VALUE arg)
VALUE rb_exec_recursive_paired (VALUE(*func)(VALUE, VALUE, int), VALUE obj, VALUE paired_obj, VALUE arg)
VALUE rb_exec_recursive_outer (VALUE(*func)(VALUE, VALUE, int), VALUE obj, VALUE arg)
static rb_event_hook_talloc_event_hook (rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
static void thread_reset_event_flags (rb_thread_t *th)
static void rb_threadptr_add_event_hook (rb_thread_t *th, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
static rb_thread_tthval2thread_t (VALUE thval)
void rb_thread_add_event_hook (VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
static int set_threads_event_flags_i (st_data_t key, st_data_t val, st_data_t flag)
static void set_threads_event_flags (int flag)
static void exec_event_hooks (const rb_event_hook_t *hook, rb_event_flag_t flag, VALUE self, ID id, VALUE klass)
void rb_threadptr_exec_event_hooks (rb_thread_t *th, rb_event_flag_t flag, VALUE self, ID id, VALUE klass)
void rb_add_event_hook (rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
static int remove_event_hook (rb_event_hook_t **root, rb_event_hook_func_t func)
static int rb_threadptr_revmove_event_hook (rb_thread_t *th, rb_event_hook_func_t func)
int rb_thread_remove_event_hook (VALUE thval, rb_event_hook_func_t func)
int rb_remove_event_hook (rb_event_hook_func_t func)
static int clear_trace_func_i (st_data_t key, st_data_t val, st_data_t flag)
void rb_clear_trace_func (void)
static void call_trace_func (rb_event_flag_t, VALUE data, VALUE self, ID id, VALUE klass)
static VALUE set_trace_func (VALUE obj, VALUE trace)
static void thread_add_trace_func (rb_thread_t *th, VALUE trace)
static VALUE thread_add_trace_func_m (VALUE obj, VALUE trace)
static VALUE thread_set_trace_func_m (VALUE obj, VALUE trace)
static const char * get_event_name (rb_event_flag_t event)
VALUE ruby_suppress_tracing (VALUE(*func)(VALUE, int), VALUE arg, int always)
static VALUE call_trace_proc (VALUE args, int tracing)
VALUE rb_thread_backtrace (VALUE thval)
static VALUE rb_thread_backtrace_m (VALUE thval)
void Init_Thread (void)
int ruby_native_thread_p (void)
static int check_deadlock_i (st_data_t key, st_data_t val, int *found)
static void update_coverage (rb_event_flag_t event, VALUE proc, VALUE self, ID id, VALUE klass)
VALUE rb_get_coverages (void)
void rb_set_coverages (VALUE coverages)
void rb_reset_coverages (void)

Variables

VALUE rb_cMutex
VALUE rb_cBarrier
static const VALUE eKillSignal = INT2FIX(0)
static const VALUE eTerminateSignal = INT2FIX(1)
static volatile int system_working = 1
static const rb_data_type_t thgroup_data_type
static const rb_data_type_t mutex_data_type
static const rb_data_type_t barrier_data_type
static ID recursive_key

Define Documentation

#define BLOCKING_REGION (   exec,
  ubf,
  ubfarg 
)
Value:
do { \
    rb_thread_t *__th = GET_THREAD(); \
    struct rb_blocking_region_buffer __region; \
    blocking_region_begin(__th, &__region, ubf, ubfarg); \
    exec; \
    blocking_region_end(__th, &__region); \
    RUBY_VM_CHECK_INTS(); \
} while(0)

Definition at line 136 of file thread.c.

Referenced by do_select(), and rb_thread_blocking_region().

#define blocking_region_begin (   th,
  region,
  func,
  arg 
)
Value:
do { \
    (region)->prev_status = (th)->status; \
    set_unblock_function((th), (func), (arg), &(region)->oldubf); \
    (th)->blocking_region_buffer = (region); \
    (th)->status = THREAD_STOPPED; \
    thread_debug("enter blocking region (%p)\n", (void *)(th)); \
    RB_GC_SAVE_MACHINE_CONTEXT(th); \
    native_mutex_unlock(&(th)->vm->global_vm_lock); \
  } while (0)

Definition at line 125 of file thread.c.

Referenced by rb_thread_blocking_region_begin(), and rb_thread_call_with_gvl().

#define BLOCKING_REGION_CORE (   exec  ) 
Value:
do { \
    GVL_UNLOCK_BEGIN(); {\
            exec; \
    } \
    GVL_UNLOCK_END(); \
} while(0);

Definition at line 118 of file thread.c.

Referenced by rb_mutex_lock().

#define DELAY_INFTY   1E30

Definition at line 634 of file thread.c.

Referenced by thread_value().

#define GetBarrierPtr (   obj  )     (VALUE)rb_check_typeddata(obj, &barrier_data_type)

Definition at line 3436 of file thread.c.

Referenced by rb_barrier_destroy(), rb_barrier_release(), and rb_barrier_wait().

#define GetMutexPtr (   obj,
  tobj 
)    TypedData_Get_Struct(obj, mutex_t, &mutex_data_type, tobj)
#define GVL_UNLOCK_BEGIN (  ) 
Value:
do { \
  rb_thread_t *_th_stored = GET_THREAD(); \
  RB_GC_SAVE_MACHINE_CONTEXT(_th_stored); \
  native_mutex_unlock(&_th_stored->vm->global_vm_lock)

Definition at line 108 of file thread.c.

#define GVL_UNLOCK_END (  ) 
Value:
native_mutex_lock(&_th_stored->vm->global_vm_lock); \
  rb_thread_set_current(_th_stored); \
} while(0)

Definition at line 113 of file thread.c.

#define mutex_mark   NULL

Definition at line 3030 of file thread.c.

#define RB_GC_SAVE_MACHINE_CONTEXT (   th  ) 
Value:
do { \
    rb_gc_save_machine_context(th); \
    SET_MACHINE_STACK_END(&(th)->machine_stack_end); \
  } while (0)

Definition at line 102 of file thread.c.

Referenced by rb_thread_schedule_rec().

#define rb_intern (   str  )     rb_intern_const(str)
#define RUBY_THREAD_PRIORITY_MAX   3

Definition at line 52 of file thread.c.

Referenced by rb_thread_priority_set().

#define RUBY_THREAD_PRIORITY_MIN   -3

Definition at line 53 of file thread.c.

Referenced by rb_thread_priority_set().

#define thread_debug   if(0)printf
#define THREAD_DEBUG   0

Definition at line 57 of file thread.c.

#define thread_start_func_2 (   th,
  st,
  rst 
)    thread_start_func_2(th, st)

Definition at line 197 of file thread.c.

#define THREAD_SYSTEM_DEPENDENT_IMPLEMENTATION

Definition at line 89 of file thread.c.

#define USE_NATIVE_THREAD_PRIORITY   0

Definition at line 51 of file thread.c.


Typedef Documentation

typedef struct rb_mutex_struct mutex_t

Function Documentation

static rb_event_hook_t* alloc_event_hook ( rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data 
) [static]
static VALUE barrier_alloc ( VALUE  klass  )  [static]

Definition at line 3431 of file thread.c.

References mutex_alloc(), and TypedData_Wrap_Struct.

Referenced by rb_barrier_new().

static void barrier_mark ( void *  ptr  )  [static]

Definition at line 3420 of file thread.c.

References rb_gc_mark().

static void blocking_region_end ( rb_thread_t th,
struct rb_blocking_region_buffer region 
) [inline, static]
static void call_trace_func ( rb_event_flag_t  event,
VALUE  data,
VALUE  self,
ID  id,
VALUE  klass 
) [static]
static VALUE call_trace_proc ( VALUE  args,
int  tracing 
) [static]
static int check_deadlock_i ( st_data_t  key,
st_data_t  val,
int *  found 
) [static]
static void clear_coverage ( void   )  [static]

Definition at line 2736 of file thread.c.

References clear_coverage_i(), rb_get_coverages(), RHASH_TBL, RTEST, and st_foreach().

Referenced by rb_thread_atfork_internal().

static int clear_coverage_i ( st_data_t  key,
st_data_t  val,
st_data_t  dummy 
) [static]

Definition at line 2722 of file thread.c.

References INT2FIX, RARRAY_LEN, and RARRAY_PTR.

Referenced by clear_coverage().

static int clear_trace_func_i ( st_data_t  key,
st_data_t  val,
st_data_t  flag 
) [static]

Definition at line 3870 of file thread.c.

References GetThreadPtr, and rb_threadptr_revmove_event_hook().

Referenced by rb_clear_trace_func().

static int do_select ( int  n,
fd_set *  read,
fd_set *  write,
fd_set *  except,
struct timeval timeout 
) [static]
static struct timeval double2timeval ( double  d  )  [static, read]

Definition at line 814 of file thread.c.

References timeval::tv_sec, and timeval::tv_usec.

Referenced by sleep_wait_for_interrupt().

static void exec_event_hooks ( const rb_event_hook_t hook,
rb_event_flag_t  flag,
VALUE  self,
ID  id,
VALUE  klass 
) [inline, static]
static VALUE exec_recursive ( VALUE(*)(VALUE, VALUE, int)  func,
VALUE  obj,
VALUE  pairid,
VALUE  arg,
int  outer 
) [static]
static VALUE exec_recursive_i ( VALUE  tag,
struct exec_recursive_params p 
) [static]
static const char* get_event_name ( rb_event_flag_t  event  )  [static]
static void getclockofday ( struct timeval tp  )  [static]

Definition at line 848 of file thread.c.

References gettimeofday(), NULL, timespec::tv_nsec, timespec::tv_sec, timeval::tv_sec, and timeval::tv_usec.

Referenced by sleep_timeval().

void Init_Thread ( void   ) 
static int lock_func ( rb_thread_t th,
mutex_t mutex,
int  last_thread 
) [static]
static void lock_interrupt ( void *  ptr  )  [static]
static VALUE mutex_alloc ( VALUE  klass  )  [static]
static void mutex_free ( void *  ptr  )  [static]
static VALUE mutex_initialize ( VALUE  self  )  [static]

Definition at line 3078 of file thread.c.

Referenced by Init_Thread().

static void mutex_locked ( rb_thread_t th,
VALUE  self 
) [static]
static size_t mutex_memsize ( const void *  ptr  )  [static]

Definition at line 3049 of file thread.c.

static VALUE mutex_sleep ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 3393 of file thread.c.

References rb_mutex_sleep(), and rb_scan_args().

Referenced by Init_Thread().

static const char * mutex_unlock ( mutex_t mutex,
rb_thread_t volatile *  th 
) [static]
NOINLINE ( static int   thread_start_func_2rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start  ) 
void rb_add_event_hook ( rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data 
)
VALUE rb_barrier_destroy ( VALUE  self  ) 

Definition at line 3468 of file thread.c.

References DATA_PTR, GetBarrierPtr, and rb_mutex_unlock().

Referenced by load_unlock().

VALUE rb_barrier_new ( void   ) 

Definition at line 3439 of file thread.c.

References barrier_alloc(), DATA_PTR, rb_cBarrier, and rb_mutex_lock().

Referenced by load_lock().

VALUE rb_barrier_release ( VALUE  self  ) 

Definition at line 3462 of file thread.c.

References GetBarrierPtr, and rb_mutex_unlock().

Referenced by load_unlock().

VALUE rb_barrier_wait ( VALUE  self  ) 
static void rb_check_deadlock ( rb_vm_t vm  )  [static]
void rb_clear_trace_func ( void   ) 

Definition at line 3879 of file thread.c.

References clear_trace_func_i(), GET_VM, rb_remove_event_hook(), and st_foreach().

Referenced by ruby_finalize_0(), and ruby_options().

void rb_disable_interrupt ( void   ) 

Definition at line 543 of file signal.c.

VALUE rb_exec_recursive ( VALUE(*)(VALUE, VALUE, int)  func,
VALUE  obj,
VALUE  arg 
)
VALUE rb_exec_recursive_outer ( VALUE(*)(VALUE, VALUE, int)  func,
VALUE  obj,
VALUE  arg 
)

Definition at line 3697 of file thread.c.

References exec_recursive(), and func.

Referenced by range_hash(), rb_ary_hash(), rb_hash_hash(), and rb_struct_hash().

VALUE rb_exec_recursive_paired ( VALUE(*)(VALUE, VALUE, int)  func,
VALUE  obj,
VALUE  paired_obj,
VALUE  arg 
)
void rb_gc_mark_threads ( void   ) 

Definition at line 1327 of file thread.c.

Referenced by garbage_collect().

void rb_gc_save_machine_context ( rb_thread_t th  ) 

Definition at line 2644 of file thread.c.

References rb_thread_struct::machine_regs.

void rb_gc_set_stack_end ( VALUE **  stack_end_p  ) 

Definition at line 2636 of file thread.c.

VALUE rb_get_coverages ( void   ) 

Definition at line 4355 of file thread.c.

References GET_VM.

Referenced by clear_coverage(), coverage(), prepare_iseq_build(), rb_coverage_result(), and rb_coverage_start().

int rb_get_next_signal ( void   ) 

Definition at line 565 of file signal.c.

References ATOMIC_DEC, rb_disable_interrupt(), rb_enable_interrupt(), and signal_buff.

Referenced by rb_threadptr_check_signal().

static void rb_mutex_abandon_all ( mutex_t mutexes  )  [static]

Definition at line 3336 of file thread.c.

References rb_mutex_struct::next_mutex, and rb_mutex_struct::th.

Referenced by terminate_atfork_i().

VALUE rb_mutex_lock ( VALUE  self  ) 
VALUE rb_mutex_locked_p ( VALUE  self  ) 

Definition at line 3096 of file thread.c.

References GetMutexPtr, Qtrue, and rb_mutex_struct::th.

Referenced by Init_Thread().

VALUE rb_mutex_new ( void   ) 

Definition at line 3084 of file thread.c.

References mutex_alloc(), and rb_cMutex.

Referenced by io_binwrite().

VALUE rb_mutex_sleep ( VALUE  self,
VALUE  timeout 
)
static VALUE rb_mutex_sleep_forever ( VALUE  time  )  [static]

Definition at line 3349 of file thread.c.

References rb_thread_sleep_deadly().

Referenced by rb_mutex_sleep().

VALUE rb_mutex_synchronize ( VALUE  mutex,
VALUE(*)(VALUE arg)  func,
VALUE  arg 
)

Definition at line 3410 of file thread.c.

References func, rb_ensure(), rb_mutex_lock(), and rb_mutex_unlock().

Referenced by fptr_finalize(), io_binwrite(), and io_flush_buffer().

VALUE rb_mutex_trylock ( VALUE  self  ) 

Definition at line 3123 of file thread.c.

References GET_THREAD, GetMutexPtr, rb_mutex_struct::lock, mutex_locked(), and rb_mutex_struct::th.

Referenced by Init_Thread(), and rb_mutex_lock().

VALUE rb_mutex_unlock ( VALUE  self  ) 
static void rb_mutex_unlock_all ( mutex_t mutex,
rb_thread_t th 
) [static]
static VALUE rb_mutex_wait_for ( VALUE  time  )  [static]

Definition at line 3356 of file thread.c.

References rb_thread_wait_for().

Referenced by rb_mutex_sleep().

int rb_remove_event_hook ( rb_event_hook_func_t  func  ) 
void rb_reset_coverages ( void   ) 

Definition at line 4368 of file thread.c.

References GET_VM, rb_remove_event_hook(), and update_coverage().

Referenced by rb_coverage_result().

void rb_set_coverages ( VALUE  coverages  ) 

Definition at line 4361 of file thread.c.

References GET_VM, Qnil, rb_add_event_hook(), RUBY_EVENT_COVERAGE, and update_coverage().

Referenced by rb_coverage_start().

int rb_signal_buff_size ( void   ) 

Definition at line 525 of file signal.c.

References signal_buff.

Referenced by rb_threadptr_execute_interrupts_rec().

void rb_signal_exec ( rb_thread_t th,
int  sig 
)
static VALUE rb_thread_abort_exc ( VALUE  thread  )  [static]

Definition at line 1773 of file thread.c.

References rb_thread_struct::abort_on_exception, GetThreadPtr, and Qtrue.

Referenced by Init_Thread().

static VALUE rb_thread_abort_exc_set ( VALUE  thread,
VALUE  val 
) [static]

Definition at line 1791 of file thread.c.

References rb_thread_struct::abort_on_exception, GetThreadPtr, rb_secure(), and RTEST.

Referenced by Init_Thread().

void rb_thread_add_event_hook ( VALUE  thval,
rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data 
)

Definition at line 3746 of file thread.c.

References rb_threadptr_add_event_hook(), and thval2thread_t().

static VALUE rb_thread_alive_p ( VALUE  thread  )  [static]
int rb_thread_alone ( void   ) 
static VALUE rb_thread_aref ( VALUE  thread,
VALUE  id 
) [static]

Definition at line 2023 of file thread.c.

References rb_thread_local_aref(), and rb_to_id().

Referenced by Init_Thread().

static VALUE rb_thread_aset ( VALUE  self,
VALUE  id,
VALUE  val 
) [static]

Definition at line 2060 of file thread.c.

References rb_thread_local_aset(), and rb_to_id().

Referenced by Init_Thread().

void rb_thread_atfork ( void   ) 
void rb_thread_atfork_before_exec ( void   ) 

Definition at line 2800 of file thread.c.

References rb_thread_atfork_internal(), and terminate_atfork_before_exec_i().

static void rb_thread_atfork_internal ( int(*)(st_data_t, st_data_t, st_data_t atfork  )  [static]
VALUE rb_thread_backtrace ( VALUE  thval  ) 
static VALUE rb_thread_backtrace_m ( VALUE  thval  )  [static]

Definition at line 4132 of file thread.c.

References rb_thread_backtrace().

Referenced by Init_Thread().

VALUE rb_thread_blocking_region ( rb_blocking_function_t func,
void *  data1,
rb_unblock_function_t ubf,
void *  data2 
)
struct rb_blocking_region_buffer* rb_thread_blocking_region_begin ( void   )  [read]

Definition at line 1048 of file thread.c.

References ALLOC, blocking_region_begin, and GET_THREAD.

void rb_thread_blocking_region_end ( struct rb_blocking_region_buffer region  ) 

Definition at line 1057 of file thread.c.

References blocking_region_end(), errno, GET_THREAD, RUBY_VM_CHECK_INTS, and xfree().

void* rb_thread_call_with_gvl ( void *(*)(void *)  func,
void *  data1 
)
VALUE rb_thread_call_without_gvl ( rb_blocking_function_t func,
void *  data1,
rb_unblock_function_t ubf,
void *  data2 
)

Definition at line 1129 of file thread.c.

References rb_thread_blocking_region().

void rb_thread_check_ints ( void   ) 

Definition at line 966 of file thread.c.

References RUBY_VM_CHECK_INTS.

Referenced by bigmul1_normal(), collect_all(), and trap_check().

int rb_thread_check_trap_pending ( void   ) 

Definition at line 976 of file thread.c.

References GET_THREAD.

Referenced by ip_rbTkWaitCommand(), ip_rbUpdateCommand(), ip_rbVwaitCommand(), and trap_check().

VALUE rb_thread_create ( VALUE(*)(ANYARGS)  fn,
void *  arg 
)
VALUE rb_thread_current ( void   ) 
static VALUE rb_thread_exit ( void   )  [static]

Definition at line 1526 of file thread.c.

References GET_THREAD, and rb_thread_kill().

Referenced by Init_Thread().

void rb_thread_fd_close ( int  fd  ) 

Definition at line 1419 of file thread.c.

Referenced by io_reopen(), and rb_io_close().

int rb_thread_fd_select ( int  max,
rb_fdset_t read,
rb_fdset_t write,
rb_fdset_t except,
struct timeval timeout 
)

Definition at line 2600 of file thread.c.

References do_select(), rb_fd_ptr, rb_fd_resize, rb_thread_sleep_forever(), and rb_thread_wait_for().

Referenced by select_internal().

int rb_thread_fd_writable ( int  fd  ) 
VALUE rb_thread_group ( VALUE  thread  ) 

Definition at line 1813 of file thread.c.

References GetThreadPtr, and rb_thread_struct::thgroup.

Referenced by Init_Thread().

static VALUE rb_thread_inspect ( VALUE  thread  )  [static]
int rb_thread_interrupted ( VALUE  thval  ) 

Definition at line 983 of file thread.c.

References GetThreadPtr, and RUBY_VM_INTERRUPTED.

Referenced by nogvl_copy_stream_read_write().

static VALUE rb_thread_key_p ( VALUE  self,
VALUE  key 
) [static]

Definition at line 2079 of file thread.c.

References GetThreadPtr, rb_thread_struct::local_storage, rb_to_id(), and st_lookup().

Referenced by Init_Thread().

static VALUE rb_thread_keys ( VALUE  self  )  [static]

Definition at line 2134 of file thread.c.

References GetThreadPtr, rb_thread_struct::local_storage, rb_ary_new(), st_foreach(), and thread_keys_i().

Referenced by Init_Thread().

VALUE rb_thread_kill ( VALUE  thread  ) 
VALUE rb_thread_list ( void   ) 

Definition at line 1663 of file thread.c.

References GET_THREAD, rb_ary_new(), st_foreach(), and thread_list_i().

Referenced by Init_Thread().

VALUE rb_thread_local_aref ( VALUE  thread,
ID  id 
)
VALUE rb_thread_local_aset ( VALUE  thread,
ID  id,
VALUE  val 
)
void rb_thread_lock_destroy ( rb_thread_lock_t lock  ) 

Definition at line 261 of file thread.c.

Referenced by ruby_vm_destruct().

void rb_thread_lock_unlock ( rb_thread_lock_t lock  ) 

Definition at line 255 of file thread.c.

Referenced by ruby_vm_destruct().

VALUE rb_thread_main ( void   ) 

Definition at line 1692 of file thread.c.

References GET_THREAD.

Referenced by rb_thread_s_main().

void rb_thread_polling ( void   ) 

Definition at line 949 of file thread.c.

References GET_THREAD, rb_thread_alone(), RUBY_VM_CHECK_INTS, and sleep_for_polling().

Referenced by rb_f_kill(), and rb_file_flock().

static VALUE rb_thread_priority ( VALUE  thread  )  [static]

Definition at line 2162 of file thread.c.

References GetThreadPtr, INT2NUM(), and rb_thread_struct::priority.

Referenced by Init_Thread().

static VALUE rb_thread_priority_set ( VALUE  thread,
VALUE  prio 
) [static]
void rb_thread_recycle_stack_release ( VALUE  ) 

Definition at line 1607 of file vm.c.

References RECYCLE_MAX, and ruby_xfree().

Referenced by thread_start_func_2().

int rb_thread_remove_event_hook ( VALUE  thval,
rb_event_hook_func_t  func 
)

Definition at line 3850 of file thread.c.

References rb_threadptr_revmove_event_hook(), and thval2thread_t().

void rb_thread_reset_timer_thread ( void   ) 

Definition at line 2709 of file thread.c.

VALUE rb_thread_run ( VALUE  thread  ) 
static VALUE rb_thread_s_abort_exc ( void   )  [static]

Definition at line 1724 of file thread.c.

References GET_THREAD, and Qtrue.

Referenced by Init_Thread().

static VALUE rb_thread_s_abort_exc_set ( VALUE  self,
VALUE  val 
) [static]

Definition at line 1755 of file thread.c.

References GET_THREAD, rb_secure(), and RTEST.

Referenced by Init_Thread().

static VALUE rb_thread_s_kill ( VALUE  obj,
VALUE  th 
) [static]

Definition at line 1509 of file thread.c.

References rb_thread_kill().

Referenced by Init_Thread().

static VALUE rb_thread_s_main ( VALUE  klass  )  [static]

Definition at line 1705 of file thread.c.

References rb_thread_main().

Referenced by Init_Thread().

static VALUE rb_thread_safe_level ( VALUE  thread  )  [static]

Definition at line 1951 of file thread.c.

References GetThreadPtr, INT2NUM(), and rb_thread_struct::safe_level.

Referenced by Init_Thread().

void rb_thread_schedule ( void   ) 
static void rb_thread_schedule_rec ( int  sched_depth  )  [static]
int rb_thread_select ( int  max,
fd_set *  read,
fd_set *  write,
fd_set *  except,
struct timeval timeout 
)
void rb_thread_sleep ( int  sec  ) 

Definition at line 993 of file thread.c.

References INT2FIX, rb_thread_wait_for(), and rb_time_timeval().

Referenced by pipe_open().

static void rb_thread_sleep_deadly ( void   )  [static]

Definition at line 903 of file thread.c.

References GET_THREAD, sleep_forever(), and thread_debug.

Referenced by rb_mutex_sleep_forever(), and rb_thread_stop().

void rb_thread_sleep_forever ( void   ) 
void rb_thread_start_timer_thread ( void   ) 

Definition at line 2715 of file thread.c.

References system_working.

static VALUE rb_thread_status ( VALUE  thread  )  [static]
VALUE rb_thread_stop ( void   ) 

Definition at line 1611 of file thread.c.

References rb_eThreadError, rb_raise(), rb_thread_alone(), and rb_thread_sleep_deadly().

Referenced by Init_Thread().

static VALUE rb_thread_stop_p ( VALUE  thread  )  [static]
void rb_thread_stop_timer_thread ( void   ) 

Definition at line 2701 of file thread.c.

Referenced by rb_thread_terminate_all(), and ruby_cleanup().

void rb_thread_terminate_all ( void   ) 
void rb_thread_wait_fd ( int  fd  ) 
static void rb_thread_wait_fd_rw ( int  fd,
int  read 
) [static]
void rb_thread_wait_for ( struct timeval  time  ) 
VALUE rb_thread_wakeup ( VALUE  thread  ) 
static void rb_threadptr_add_event_hook ( rb_thread_t th,
rb_event_hook_func_t  func,
rb_event_flag_t  events,
VALUE  data 
) [static]
void rb_threadptr_check_signal ( rb_thread_t mth  ) 
static int rb_threadptr_dead ( rb_thread_t th  )  [static]
void rb_threadptr_exec_event_hooks ( rb_thread_t th,
rb_event_flag_t  flag,
VALUE  self,
ID  id,
VALUE  klass 
)
void rb_threadptr_execute_interrupts ( rb_thread_t th  ) 

Definition at line 1321 of file thread.c.

References rb_threadptr_execute_interrupts_rec().

static void rb_threadptr_execute_interrupts_rec ( rb_thread_t th,
int  sched_depth 
) [static]
void rb_threadptr_interrupt ( rb_thread_t th  ) 
static VALUE rb_threadptr_raise ( rb_thread_t th,
int  argc,
VALUE argv 
) [static]
static void rb_threadptr_ready ( rb_thread_t th  )  [static]

Definition at line 1335 of file thread.c.

References rb_threadptr_interrupt().

Referenced by rb_thread_wakeup(), and rb_threadptr_raise().

int rb_threadptr_reset_raised ( rb_thread_t th  ) 

Definition at line 1409 of file thread.c.

References RAISED_EXCEPTION, and rb_thread_struct::raised_flag.

Referenced by error_handle(), ruby_suppress_tracing(), and setup_exception().

static int rb_threadptr_revmove_event_hook ( rb_thread_t th,
rb_event_hook_func_t  func 
) [static]
int rb_threadptr_set_raised ( rb_thread_t th  ) 

Definition at line 1399 of file thread.c.

References RAISED_EXCEPTION, and rb_thread_struct::raised_flag.

Referenced by error_handle(), ruby_suppress_tracing(), and setup_exception().

void rb_threadptr_signal_exit ( rb_thread_t th  ) 
void rb_threadptr_signal_raise ( rb_thread_t th,
int  sig 
)
struct timeval rb_time_interval ( VALUE   )  [read]

Definition at line 2371 of file time.c.

References time_timeval(), and TRUE.

struct timeval rb_time_timeval ( VALUE   )  [read]
static VALUE recursive_check ( VALUE  list,
VALUE  obj_id,
VALUE  paired_obj_id 
) [static]

Definition at line 3514 of file thread.c.

References NIL_P, Qundef, rb_hash_lookup, rb_hash_lookup2(), T_HASH, and TYPE.

Referenced by exec_recursive().

static VALUE recursive_list_access ( void   )  [static]
static void recursive_pop ( VALUE  list,
VALUE  obj,
VALUE  paired_obj 
) [static]
static void recursive_push ( VALUE  list,
VALUE  obj,
VALUE  paired_obj 
) [static]

Definition at line 3542 of file thread.c.

References OBJ_UNTRUST, Qtrue, Qundef, rb_hash_aset(), rb_hash_lookup2(), rb_hash_new(), T_HASH, and TYPE.

Referenced by exec_recursive(), and exec_recursive_i().

static int remove_event_hook ( rb_event_hook_t **  root,
rb_event_hook_func_t  func 
) [static]

Definition at line 3818 of file thread.c.

References rb_event_hook_struct::next, and xfree().

Referenced by rb_remove_event_hook(), and rb_threadptr_revmove_event_hook().

static VALUE remove_from_join_list ( VALUE  arg  )  [static]
static void reset_unblock_function ( rb_thread_t th,
const struct rb_unblock_callback old 
) [static]

Definition at line 286 of file thread.c.

References rb_thread_struct::interrupt_lock, and rb_thread_struct::unblock.

Referenced by blocking_region_end(), and rb_mutex_lock().

void ruby_error_print ( void   ) 

Definition at line 189 of file eval_error.c.

References error_print().

Referenced by rb_f_abort().

int ruby_native_thread_p ( void   ) 

Definition at line 4260 of file thread.c.

VALUE ruby_suppress_tracing ( VALUE(*)(VALUE, int)  func,
VALUE  arg,
int  always 
)
int ruby_thread_has_gvl_p ( void   ) 
void ruby_thread_init_stack ( rb_thread_t th  ) 

Definition at line 406 of file thread.c.

Referenced by Init_BareVM().

void ruby_thread_stack_overflow ( rb_thread_t th  ) 
static void set_threads_event_flags ( int  flag  )  [static]

Definition at line 3769 of file thread.c.

References GET_VM, set_threads_event_flags_i(), and st_foreach().

Referenced by rb_add_event_hook(), and rb_remove_event_hook().

static int set_threads_event_flags_i ( st_data_t  key,
st_data_t  val,
st_data_t  flag 
) [static]

Definition at line 3753 of file thread.c.

References rb_thread_struct::event_flags, and GetThreadPtr.

Referenced by set_threads_event_flags().

static VALUE set_trace_func ( VALUE  obj,
VALUE  trace 
) [static]
static void set_unblock_function ( rb_thread_t th,
rb_unblock_function_t func,
void *  arg,
struct rb_unblock_callback old 
) [static]
static void sleep_for_polling ( rb_thread_t th  )  [static]

Definition at line 933 of file thread.c.

References sleep_timeval(), timeval::tv_sec, and timeval::tv_usec.

Referenced by rb_thread_polling().

static void sleep_forever ( rb_thread_t th,
int  nodeadlock 
) [static]
static void sleep_timeval ( rb_thread_t th,
struct timeval  time 
) [static]
static void sleep_wait_for_interrupt ( rb_thread_t th,
double  sleepsec 
) [static]

Definition at line 927 of file thread.c.

References double2timeval(), and sleep_timeval().

Referenced by thread_join_sleep().

static void st_delete_wrap ( st_table table,
st_data_t  key 
) [inline, static]

Definition at line 82 of file thread.c.

References st_delete().

Referenced by rb_thread_local_aset(), thread_create_core(), and thread_start_func_2().

static int terminate_atfork_before_exec_i ( st_data_t  key,
st_data_t  val,
st_data_t  current_th 
) [static]

Definition at line 2787 of file thread.c.

References GetThreadPtr, and thread_cleanup_func_before_exec().

Referenced by rb_thread_atfork_before_exec().

static int terminate_atfork_i ( st_data_t  key,
st_data_t  val,
st_data_t  current_th 
) [static]
static int terminate_i ( st_data_t  key,
st_data_t  val,
rb_thread_t main_thread 
) [static]

Definition at line 309 of file thread.c.

References eTerminateSignal, GetThreadPtr, rb_threadptr_interrupt(), and thread_debug.

Referenced by rb_thread_terminate_all().

static VALUE thgroup_add ( VALUE  group,
VALUE  thread 
) [static]
static VALUE thgroup_enclose ( VALUE  group  )  [static]

Definition at line 2908 of file thread.c.

References thgroup::enclosed, thgroup_data_type, and TypedData_Get_Struct.

Referenced by Init_Thread().

static VALUE thgroup_enclosed_p ( VALUE  group  )  [static]

Definition at line 2928 of file thread.c.

References thgroup::enclosed, thgroup_data_type, and TypedData_Get_Struct.

Referenced by Init_Thread().

static VALUE thgroup_list ( VALUE  group  )  [static]
static int thgroup_list_i ( st_data_t  key,
st_data_t  val,
st_data_t  data 
) [static]

Definition at line 2852 of file thread.c.

References GetThreadPtr, thgroup_list_params::group, rb_ary_push(), and rb_thread_struct::thgroup.

Referenced by thgroup_list().

static size_t thgroup_memsize ( const void *  ptr  )  [static]

Definition at line 2811 of file thread.c.

static VALUE thgroup_s_alloc ( VALUE  klass  )  [static]

Definition at line 2834 of file thread.c.

References thgroup::enclosed, thgroup::group, thgroup_data_type, and TypedData_Make_Struct.

Referenced by Init_Thread().

static void thread_add_trace_func ( rb_thread_t th,
VALUE  trace 
) [static]
static VALUE thread_add_trace_func_m ( VALUE  obj,
VALUE  trace 
) [static]

Definition at line 3966 of file thread.c.

References GetThreadPtr, and thread_add_trace_func().

Referenced by Init_Thread().

static void thread_cleanup_func ( void *  th_ptr  )  [static]
static void thread_cleanup_func_before_exec ( void *  th_ptr  )  [static]
static VALUE thread_create_core ( VALUE  thval,
VALUE  args,
VALUE(*)(ANYARGS)  fn 
) [static]
static VALUE thread_initialize ( VALUE  thread,
VALUE  args 
) [static]
static VALUE thread_join ( rb_thread_t target_th,
double  delay 
) [static]
static VALUE thread_join_m ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 773 of file thread.c.

References GetThreadPtr, join_arg::limit, NIL_P, rb_num2dbl(), rb_scan_args(), and thread_join().

Referenced by Init_Thread().

static VALUE thread_join_sleep ( VALUE  arg  )  [static]
static int thread_keys_i ( ID  key,
VALUE  value,
VALUE  ary 
) [static]

Definition at line 2096 of file thread.c.

References ID2SYM, and rb_ary_push().

Referenced by rb_thread_keys().

static int thread_list_i ( st_data_t  key,
st_data_t  val,
void *  data 
) [static]
static VALUE thread_raise_m ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 1446 of file thread.c.

References GetThreadPtr, and rb_threadptr_raise().

Referenced by Init_Thread().

static void thread_reset_event_flags ( rb_thread_t th  )  [static]
static VALUE thread_s_current ( VALUE  klass  )  [static]

Definition at line 1686 of file thread.c.

References rb_thread_current().

Referenced by Init_Thread().

static VALUE thread_s_new ( int  argc,
VALUE argv,
VALUE  klass 
) [static]
static VALUE thread_s_pass ( VALUE  klass  )  [static]

Definition at line 1244 of file thread.c.

References rb_thread_schedule().

Referenced by Init_Thread().

static VALUE thread_set_trace_func_m ( VALUE  obj,
VALUE  trace 
) [static]
static VALUE thread_start ( VALUE  klass,
VALUE  args 
) [static]

Definition at line 594 of file thread.c.

References rb_thread_alloc(), and thread_create_core().

Referenced by Init_Thread().

static int thread_start_func_2 ( rb_thread_t th,
VALUE stack_start,
VALUE register_stack_start 
) [static]
static const char* thread_status_name ( enum rb_thread_status  status  )  [static]
static void thread_unlock_all_locking_mutexes ( rb_thread_t th  )  [static]

Definition at line 372 of file thread.c.

References rb_thread_struct::keeping_mutexes, and rb_mutex_unlock_all().

static VALUE thread_value ( VALUE  self  )  [static]

Definition at line 801 of file thread.c.

References DELAY_INFTY, GetThreadPtr, thread_join(), and rb_thread_struct::value.

Referenced by Init_Thread().

static rb_thread_t* thval2thread_t ( VALUE  thval  )  [static]

Definition at line 3738 of file thread.c.

References GetThreadPtr.

Referenced by rb_thread_add_event_hook(), and rb_thread_remove_event_hook().

static double timeofday ( void   )  [static]
static void timer_thread_function ( void *  arg  )  [static]
static void update_coverage ( rb_event_flag_t  event,
VALUE  proc,
VALUE  self,
ID  id,
VALUE  klass 
) [static]
static int vm_living_thread_num ( rb_vm_t vm  )  [static]

Variable Documentation

Initial value:
 {
    "barrier",
    barrier_mark, 0, 0,
}

Definition at line 3425 of file thread.c.

const VALUE eKillSignal = INT2FIX(0) [static]

Definition at line 77 of file thread.c.

Referenced by rb_thread_kill(), and rb_threadptr_execute_interrupts_rec().

const VALUE eTerminateSignal = INT2FIX(1) [static]

Definition at line 78 of file thread.c.

Referenced by rb_threadptr_execute_interrupts_rec(), and terminate_i().

Initial value:
 {
    "mutex",
    mutex_mark, mutex_free, mutex_memsize,
}

Definition at line 3054 of file thread.c.

Definition at line 61 of file thread.c.

Referenced by rb_barrier_new().

Definition at line 60 of file thread.c.

Referenced by Init_Thread(), rb_mutex_new(), and rb_objspace_call_finalizer().

ID recursive_key [static]

Definition at line 3476 of file thread.c.

volatile int system_working = 1 [static]

Definition at line 79 of file thread.c.

Referenced by rb_thread_start_timer_thread().

Initial value:
 {
    "thgroup",
    NULL, RUBY_TYPED_DEFAULT_FREE, thgroup_memsize,
}

Definition at line 2816 of file thread.c.

Referenced by thgroup_add(), thgroup_enclose(), thgroup_enclosed_p(), and thgroup_s_alloc().