Ruby
1.9.3p551(2014-11-13revision48407)
|
Go to the source code of this file.
Data Structures | |
struct | rb_blocking_region_buffer |
struct | rb_mutex_struct |
struct | join_arg |
struct | select_args |
struct | thgroup |
struct | thgroup_list_params |
struct | exec_recursive_params |
struct | event_call_args |
Typedefs | |
typedef struct rb_mutex_struct | rb_mutex_t |
Enumerations | |
enum | { EVENT_RUNNING_NOTHING, EVENT_RUNNING_TRACE = 1, EVENT_RUNNING_THREAD = 2, EVENT_RUNNING_VM = 4, EVENT_RUNNING_EVENT_MASK = EVENT_RUNNING_VM|EVENT_RUNNING_THREAD } |
Variables | |
VALUE | rb_cMutex |
VALUE | rb_cBarrier |
static volatile int | system_working = 1 |
static const rb_data_type_t | thgroup_data_type |
static const rb_data_type_t | mutex_data_type |
rb_thread_t * | patrol_thread = NULL |
static const rb_data_type_t | barrier_data_type |
static ID | recursive_key |
#define BLOCKING_REGION | ( | exec, | |
ubf, | |||
ubfarg | |||
) |
Definition at line 140 of file thread.c.
Referenced by do_select(), rb_thread_blocking_region(), and rb_thread_io_blocking_region().
Definition at line 129 of file thread.c.
Referenced by rb_thread_blocking_region_begin(), and rb_thread_call_with_gvl().
#define closed_stream_error GET_VM()->special_exceptions[ruby_error_closed_stream] |
Definition at line 90 of file thread.c.
Referenced by Init_Thread().
#define DELAY_INFTY 1E30 |
Definition at line 665 of file thread.c.
Referenced by thread_join(), thread_join_m(), and thread_value().
#define eKillSignal INT2FIX(0) |
Definition at line 86 of file thread.c.
Referenced by rb_thread_kill(), and rb_threadptr_execute_interrupts_common().
#define eTerminateSignal INT2FIX(1) |
Definition at line 87 of file thread.c.
Referenced by rb_threadptr_execute_interrupts_common(), and terminate_i().
#define GetBarrierPtr | ( | obj | ) | ((VALUE)rb_check_typeddata((obj), &barrier_data_type)) |
Definition at line 3811 of file thread.c.
Referenced by rb_barrier_destroy(), rb_barrier_release(), and rb_barrier_wait().
#define GetMutexPtr | ( | obj, | |
tobj | |||
) | TypedData_Get_Struct((obj), rb_mutex_t, &mutex_data_type, (tobj)) |
Definition at line 3370 of file thread.c.
Referenced by check_deadlock_i(), mutex_locked(), rb_barrier_wait(), rb_mutex_abandon_locking_mutex(), rb_mutex_lock(), rb_mutex_locked_p(), rb_mutex_trylock(), and rb_mutex_unlock().
#define GVL_UNLOCK_BEGIN | ( | ) |
Definition at line 119 of file thread.c.
Referenced by rb_mutex_lock().
#define GVL_UNLOCK_END | ( | ) |
Definition at line 124 of file thread.c.
Referenced by rb_mutex_lock().
#define OBJ_ID_EQL | ( | obj_id, | |
other | |||
) | ((obj_id) == (other)) |
Referenced by recursive_check().
Definition at line 2530 of file thread.c.
Referenced by rb_thread_select().
#define RB_GC_SAVE_MACHINE_CONTEXT | ( | th | ) |
Definition at line 113 of file thread.c.
Referenced by rb_thread_schedule_limits().
#define rb_intern | ( | str | ) | rb_intern_const(str) |
#define RUBY_EVENT_REMOVED 0x1000000 |
Definition at line 4086 of file thread.c.
Referenced by defer_remove_event_hook(), exec_event_hooks(), remove_defered_event_hook(), remove_event_hook(), search_live_hook(), and thread_reset_event_flags().
#define RUBY_THREAD_PRIORITY_MAX 3 |
Definition at line 67 of file thread.c.
Referenced by rb_thread_priority_set().
#define RUBY_THREAD_PRIORITY_MIN -3 |
Definition at line 68 of file thread.c.
Referenced by rb_thread_priority_set().
#define thread_debug if(0)printf |
Definition at line 197 of file thread.c.
Referenced by blocking_region_end(), rb_thread_alone(), rb_thread_kill(), rb_thread_schedule_limits(), rb_thread_sleep_deadly(), rb_thread_sleep_forever(), rb_thread_terminate_all(), rb_thread_wait_fd_rw(), rb_threadptr_execute_interrupts_common(), sleep_timeval(), terminate_i(), thread_join(), thread_join_sleep(), and thread_start_func_2().
#define THREAD_IO_WAITING_P | ( | th | ) |
Definition at line 1452 of file thread.c.
Referenced by thread_fd_close_i().
typedef struct rb_mutex_struct rb_mutex_t |
anonymous enum |
|
static |
Definition at line 4108 of file thread.c.
References ALLOC, data, rb_event_hook_struct::data, rb_event_hook_struct::flag, func, and rb_event_hook_struct::func.
Referenced by rb_add_event_hook(), and rb_threadptr_add_event_hook().
Definition at line 3806 of file thread.c.
References mutex_alloc(), and TypedData_Wrap_Struct.
Referenced by rb_barrier_new().
Definition at line 3795 of file thread.c.
References rb_gc_mark().
|
inlinestatic |
Definition at line 1060 of file thread.c.
References rb_thread_struct::blocking_region_buffer, rb_blocking_region_buffer::oldubf, rb_blocking_region_buffer::prev_status, rb_thread_set_current, reset_unblock_function(), rb_thread_struct::status, thread_debug, THREAD_STOPPED, and rb_thread_struct::vm.
Referenced by rb_thread_blocking_region_end(), and rb_thread_call_with_gvl().
|
static |
Definition at line 4589 of file thread.c.
References call_trace_proc(), event_call_args::event, FALSE, GET_THREAD, id, event_call_args::id, klass, event_call_args::klass, proc, event_call_args::proc, ruby_suppress_tracing(), event_call_args::self, and event_call_args::th.
Referenced by set_trace_func(), thread_add_trace_func(), and thread_set_trace_func_m().
Definition at line 4549 of file thread.c.
References argv, event_call_args::event, FL_SINGLETON, FL_TEST, get_event_name(), event_call_args::id, ID2SYM, ID_ALLOCATOR, INT2FIX, klass, event_call_args::klass, p, event_call_args::proc, Qnil, rb_binding_new(), rb_iv_get(), rb_proc_call_with_block(), rb_sourcefile, rb_sourceline(), rb_str_new2(), rb_thread_method_id_and_class(), RBASIC, event_call_args::self, T_ICLASS, event_call_args::th, and TYPE.
Referenced by call_trace_func().
Definition at line 4797 of file thread.c.
References rb_mutex_struct::cond_waiting, GetMutexPtr, GetThreadPtr, key, rb_mutex_struct::lock, rb_thread_struct::locking_mutex, RUBY_VM_INTERRUPTED, ST_CONTINUE, ST_STOP, rb_thread_struct::status, rb_mutex_struct::th, th, and THREAD_STOPPED_FOREVER.
Referenced by rb_check_deadlock().
Definition at line 3082 of file thread.c.
References clear_coverage_i(), rb_get_coverages(), RHASH_TBL, RTEST, and st_foreach.
Referenced by rb_thread_atfork_internal().
Definition at line 3068 of file thread.c.
References i, INT2FIX, Qnil, RARRAY_LEN, RARRAY_PTR(), and ST_CONTINUE.
Referenced by clear_coverage().
Definition at line 4381 of file thread.c.
References GetThreadPtr, rb_threadptr_remove_event_hook(), ST_CONTINUE, and th.
Referenced by rb_clear_trace_func().
|
static |
Definition at line 4262 of file thread.c.
References rb_event_hook_struct::flag, rb_event_hook_struct::func, rb_event_hook_struct::next, and RUBY_EVENT_REMOVED.
Referenced by rb_remove_event_hook(), and rb_threadptr_remove_event_hook().
|
static |
Definition at line 2561 of file thread.c.
References BLOCKING_REGION, d, errno, finish, GET_THREAD, gettimeofday(), int, NULL, rb_fd_dup, rb_fd_init_copy, rb_fd_select, rb_fd_term, result, th, timeofday(), timeval::tv_sec, timeval::tv_usec, UNINITIALIZED_VAR, and wait.
Referenced by rb_thread_fd_select().
|
static |
Definition at line 845 of file thread.c.
References d, int, time, timeval::tv_sec, and timeval::tv_usec.
Referenced by sleep_wait_for_interrupt().
|
inlinestatic |
Definition at line 4179 of file thread.c.
References rb_event_hook_struct::data, rb_event_hook_struct::flag, rb_event_hook_struct::func, rb_event_hook_struct::next, removed, and RUBY_EVENT_REMOVED.
Referenced by thread_exec_event_hooks().
|
static |
Definition at line 4014 of file thread.c.
References arg, exec_recursive_params::arg, exec_recursive_i(), func, exec_recursive_params::func, ID2SYM, exec_recursive_params::list, obj, exec_recursive_params::obj, exec_recursive_params::objid, exec_recursive_params::pairid, Qundef, rb_catch_obj(), rb_obj_id(), rb_throw_obj(), recursive_check(), recursive_list_access(), recursive_pop(), recursive_push(), result, and TRUE.
Referenced by rb_exec_recursive(), rb_exec_recursive_outer(), rb_exec_recursive_paired(), and rb_exec_recursive_paired_outer().
|
static |
Definition at line 3985 of file thread.c.
References exec_recursive_params::arg, EXEC_TAG, FALSE, exec_recursive_params::func, JUMP_TAG, exec_recursive_params::list, exec_recursive_params::obj, exec_recursive_params::objid, exec_recursive_params::pairid, POP_TAG, PUSH_TAG, Qundef, recursive_pop(), recursive_push(), and result.
Referenced by exec_recursive().
|
static |
Definition at line 4524 of file thread.c.
References RUBY_EVENT_C_CALL, RUBY_EVENT_C_RETURN, RUBY_EVENT_CALL, RUBY_EVENT_CLASS, RUBY_EVENT_END, RUBY_EVENT_LINE, RUBY_EVENT_RAISE, and RUBY_EVENT_RETURN.
Referenced by call_trace_proc().
Definition at line 880 of file thread.c.
References gettimeofday(), NULL, timespec::tv_nsec, timeval::tv_sec, timespec::tv_sec, and timeval::tv_usec.
Referenced by sleep_timeval().
|
static |
Definition at line 2911 of file thread.c.
References rb_fd_init, and rb_fd_set.
Referenced by rb_wait_for_single_fd().
Definition at line 4687 of file thread.c.
References closed_stream_error, GET_THREAD, rb_thread_struct::interrupt_lock, mutex_alloc(), mutex_initialize(), mutex_sleep(), OBJ_FREEZE, OBJ_TAINT, rb_cMutex, rb_cObject, rb_cThread, rb_define_alloc_func(), rb_define_class(), rb_define_const(), rb_define_global_function(), rb_define_method(), rb_define_singleton_method(), rb_eIOError, rb_eStandardError, rb_eThreadError, rb_exc_new2(), rb_intern, rb_mutex_lock(), rb_mutex_locked_p(), rb_mutex_trylock(), rb_mutex_unlock(), rb_obj_alloc(), rb_thread_abort_exc(), rb_thread_abort_exc_set(), rb_thread_alive_p(), rb_thread_aref(), rb_thread_aset(), rb_thread_backtrace_m(), rb_thread_exit(), rb_thread_group(), rb_thread_inspect(), rb_thread_key_p(), rb_thread_keys(), rb_thread_kill(), rb_thread_list(), rb_thread_priority(), rb_thread_priority_set(), rb_thread_run(), rb_thread_s_abort_exc(), rb_thread_s_abort_exc_set(), rb_thread_s_kill(), rb_thread_s_main(), rb_thread_safe_level(), rb_thread_stop(), rb_thread_stop_p(), rb_thread_wakeup(), set_trace_func(), rb_thread_struct::thgroup, thgroup_add(), rb_vm_struct::thgroup_default, thgroup_enclose(), thgroup_enclosed_p(), thgroup_list(), thgroup_s_alloc(), thread_add_trace_func_m(), thread_initialize(), thread_join_m(), thread_raise_m(), thread_s_current(), thread_s_new(), thread_s_pass(), thread_set_trace_func_m(), thread_start(), thread_value(), rb_thread_struct::vm, and void.
|
static |
Definition at line 3496 of file thread.c.
References rb_mutex_struct::cond, rb_mutex_struct::cond_waiting, err, ETIMEDOUT, rb_mutex_struct::lock, RUBY_VM_INTERRUPTED, rb_mutex_struct::th, th, timespec::tv_nsec, and timespec::tv_sec.
Referenced by rb_mutex_lock().
Definition at line 3536 of file thread.c.
References rb_mutex_struct::cond, rb_mutex_struct::cond_waiting, and rb_mutex_struct::lock.
Referenced by rb_mutex_lock().
Definition at line 3414 of file thread.c.
References rb_mutex_struct::cond, rb_mutex_struct::lock, obj, and TypedData_Make_Struct.
Referenced by barrier_alloc(), Init_Thread(), and rb_mutex_new().
Definition at line 3376 of file thread.c.
References rb_mutex_struct::cond, err, rb_mutex_struct::lock, ptr, rb_bug(), rb_mutex_unlock_th(), ruby_xfree(), and rb_mutex_struct::th.
Definition at line 3432 of file thread.c.
Referenced by Init_Thread().
|
static |
Definition at line 3458 of file thread.c.
References GetMutexPtr, rb_thread_struct::keeping_mutexes, and rb_mutex_struct::next_mutex.
Referenced by rb_mutex_lock(), and rb_mutex_trylock().
Definition at line 3768 of file thread.c.
References rb_mutex_sleep(), and rb_scan_args().
Referenced by Init_Thread().
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 | ||
) |
Definition at line 4250 of file thread.c.
References alloc_event_hook(), rb_vm_struct::event_hooks, GET_VM, rb_event_hook_struct::next, and set_threads_event_flags().
Referenced by rb_set_coverages(), and set_trace_func().
Definition at line 3843 of file thread.c.
References DATA_PTR(), GetBarrierPtr, and rb_mutex_unlock().
Referenced by load_unlock().
Definition at line 3814 of file thread.c.
References barrier_alloc(), DATA_PTR(), rb_cBarrier, and rb_mutex_lock().
Referenced by load_lock().
Definition at line 3837 of file thread.c.
References GetBarrierPtr, and rb_mutex_unlock().
Referenced by load_unlock().
Definition at line 3822 of file thread.c.
References DATA_PTR(), GET_THREAD, GetBarrierPtr, GetMutexPtr, m, Qfalse, Qtrue, rb_mutex_lock(), rb_mutex_unlock(), and rb_mutex_struct::th.
Referenced by load_lock().
Definition at line 4845 of file thread.c.
References argv, check_deadlock_i(), GET_THREAD, rb_vm_struct::living_threads, rb_vm_struct::main_thread, st_table::num_entries, rb_bug(), rb_eFatal, rb_str_new2(), rb_threadptr_raise(), rb_vm_struct::sleeper, st_foreach, and vm_living_thread_num().
Referenced by rb_mutex_lock(), sleep_forever(), and thread_start_func_2().
Definition at line 4390 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().
Definition at line 4057 of file thread.c.
References exec_recursive(), and func.
Referenced by ary_join_1(), enumerator_inspect(), range_inspect(), rb_ary_inspect(), rb_file_join(), rb_hash_inspect(), rb_io_puts(), rb_obj_inspect(), and rb_struct_inspect().
Definition at line 4080 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 | ||
) |
Definition at line 4068 of file thread.c.
References exec_recursive(), func, and rb_obj_id().
Referenced by hash_equal(), range_eq(), range_eql(), rb_ary_cmp(), rb_ary_eql(), rb_ary_equal(), rb_struct_eql(), and rb_struct_equal().
VALUE rb_exec_recursive_paired_outer | ( | VALUE(*)(VALUE, VALUE, int) | func, |
VALUE | obj, | ||
VALUE | paired_obj, | ||
VALUE | arg | ||
) |
Definition at line 4405 of file thread.c.
References exec_recursive(), func, and rb_obj_id().
Referenced by cmp_eq().
void rb_gc_save_machine_context | ( | rb_thread_t * | th | ) |
Definition at line 3000 of file thread.c.
References FLUSH_REGISTER_WINDOWS, and rb_thread_struct::machine_regs.
Definition at line 4886 of file thread.c.
References GET_VM.
Referenced by clear_coverage(), coverage(), prepare_iseq_build(), rb_coverage_result(), and rb_coverage_start().
|
static |
Definition at line 3711 of file thread.c.
References rb_mutex_struct::next_mutex, and rb_mutex_struct::th.
Referenced by rb_mutex_abandon_keeping_mutexes(), and rb_mutex_abandon_locking_mutex().
|
static |
Definition at line 3689 of file thread.c.
References rb_thread_struct::keeping_mutexes, NULL, and rb_mutex_abandon_all().
Referenced by terminate_atfork_i().
|
static |
Definition at line 3698 of file thread.c.
References GetMutexPtr, rb_thread_struct::locking_mutex, Qfalse, rb_mutex_abandon_all(), and rb_mutex_struct::th.
Referenced by terminate_atfork_i().
Definition at line 3560 of file thread.c.
References GET_THREAD, GetMutexPtr, GVL_UNLOCK_BEGIN, GVL_UNLOCK_END, rb_mutex_struct::lock, lock_func(), lock_interrupt(), rb_thread_struct::locking_mutex, mutex_locked(), NULL, Qfalse, rb_check_deadlock(), rb_eThreadError, rb_mutex_trylock(), rb_raise(), reset_unblock_function(), RUBY_VM_CHECK_INTS, set_unblock_function(), rb_vm_struct::sleeper, rb_thread_struct::status, rb_mutex_struct::th, th, THREAD_STOPPED_FOREVER, rb_thread_struct::vm, and vm_living_thread_num().
Referenced by Init_Thread(), rb_barrier_new(), rb_barrier_wait(), rb_mutex_sleep(), and rb_mutex_synchronize().
Definition at line 3450 of file thread.c.
References GetMutexPtr, Qfalse, Qtrue, and rb_mutex_struct::th.
Referenced by Init_Thread().
Definition at line 3438 of file thread.c.
References mutex_alloc(), and rb_cMutex.
Referenced by io_binwrite().
Definition at line 3739 of file thread.c.
References end, INT2FIX, NIL_P, Qnil, rb_ensure(), rb_mutex_lock(), rb_mutex_sleep_forever(), rb_mutex_unlock(), rb_mutex_wait_for(), rb_time_interval(), and time.
Referenced by mutex_sleep().
Definition at line 3724 of file thread.c.
References Qnil, and rb_thread_sleep_deadly().
Referenced by rb_mutex_sleep().
Definition at line 3785 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().
Definition at line 3477 of file thread.c.
References GET_THREAD, GetMutexPtr, rb_mutex_struct::lock, mutex_locked(), Qfalse, Qtrue, and rb_mutex_struct::th.
Referenced by Init_Thread(), and rb_mutex_lock().
Definition at line 3676 of file thread.c.
References err, GET_THREAD, GetMutexPtr, rb_eThreadError, rb_mutex_unlock_th(), and rb_raise().
Referenced by Init_Thread(), rb_barrier_destroy(), rb_barrier_release(), rb_barrier_wait(), rb_mutex_sleep(), and rb_mutex_synchronize().
|
static |
Definition at line 3625 of file thread.c.
References rb_mutex_struct::cond, rb_mutex_struct::cond_waiting, err, rb_thread_struct::keeping_mutexes, rb_mutex_struct::lock, rb_mutex_struct::next_mutex, NULL, and rb_mutex_struct::th.
Referenced by mutex_free(), rb_mutex_unlock(), and rb_threadptr_unlock_all_locking_mutexes().
Definition at line 3731 of file thread.c.
References Qnil, rb_thread_wait_for(), and t.
Referenced by rb_mutex_sleep().
Definition at line 3403 of file thread.c.
References Qfalse, Qtrue, and rb_typeddata_is_kind_of().
Referenced by rb_objspace_call_finalizer().
int rb_remove_event_hook | ( | rb_event_hook_func_t | func | ) |
Definition at line 4360 of file thread.c.
References defer_remove_event_hook(), rb_vm_struct::event_hooks, GET_VM, remove_event_hook(), ret, search_live_hook(), set_threads_event_flags(), and vm_event_hooks_running_thread().
Referenced by rb_clear_trace_func(), rb_reset_coverages(), and set_trace_func().
Definition at line 4899 of file thread.c.
References GET_VM, Qfalse, rb_remove_event_hook(), and update_coverage().
Referenced by rb_coverage_result().
Definition at line 4892 of file thread.c.
References GET_VM, Qnil, rb_add_event_hook(), RUBY_EVENT_COVERAGE, and update_coverage().
Referenced by rb_coverage_start().
Definition at line 1844 of file thread.c.
References rb_thread_struct::abort_on_exception, GetThreadPtr, Qfalse, Qtrue, and th.
Referenced by Init_Thread().
Definition at line 1862 of file thread.c.
References rb_thread_struct::abort_on_exception, GetThreadPtr, rb_secure(), RTEST, th, and val.
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 4150 of file thread.c.
References rb_threadptr_add_event_hook(), and thval2thread_t().
Definition at line 1974 of file thread.c.
References GetThreadPtr, Qfalse, Qtrue, rb_threadptr_dead(), and th.
Referenced by Init_Thread(), and while().
Definition at line 2183 of file thread.c.
References GET_THREAD, thread_debug, and vm_living_thread_num().
Referenced by for(), io_writable_length(), rb_thread_polling(), rb_thread_schedule_limits(), rb_thread_stop(), rb_thread_terminate_all(), rb_thread_wait_fd_rw(), and rb_waitpid().
Definition at line 2097 of file thread.c.
References rb_thread_local_aref(), and rb_to_id().
Referenced by Init_Thread().
Definition at line 2134 of file thread.c.
References rb_thread_local_aset(), and rb_to_id().
Referenced by Init_Thread().
Definition at line 3122 of file thread.c.
References GET_THREAD, rb_reset_random_seed(), rb_thread_atfork_internal(), and terminate_atfork_i().
Referenced by pipe_open().
Definition at line 3145 of file thread.c.
References rb_thread_atfork_internal(), and terminate_atfork_before_exec_i().
Referenced by chfunc().
Definition at line 3091 of file thread.c.
References clear_coverage(), GET_THREAD, rb_vm_struct::living_threads, rb_vm_struct::main_thread, rb_thread_struct::self, rb_vm_struct::sleeper, st_clear(), st_foreach, st_insert, th, and rb_thread_struct::vm.
Referenced by rb_thread_atfork(), and rb_thread_atfork_before_exec().
Definition at line 4658 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 | ||
) |
Definition at line 1130 of file thread.c.
References BLOCKING_REGION, errno, func, GET_THREAD, RUBY_UBF_IO, RUBY_UBF_PROCESS, th, val, and rb_thread_struct::waiting_fd.
Referenced by bigdivrem(), copy_stream_body(), curses_getch(), curses_getstr(), rb_sysopen_internal(), rb_thread_call_without_gvl(), rb_waitpid(), window_getch(), and window_getstr().
struct rb_blocking_region_buffer* rb_thread_blocking_region_begin | ( | void | ) |
Definition at line 1074 of file thread.c.
References ALLOC, blocking_region_begin, GET_THREAD, and th.
void rb_thread_blocking_region_end | ( | struct rb_blocking_region_buffer * | region | ) |
Definition at line 1083 of file thread.c.
References blocking_region_end(), errno, GET_THREAD, RUBY_VM_CHECK_INTS, th, and xfree.
Definition at line 1214 of file thread.c.
References rb_unblock_callback::arg, blocking_region_begin, rb_thread_struct::blocking_region_buffer, blocking_region_end(), EXIT_FAILURE, rb_unblock_callback::func, if(), r, rb_bug(), th, and rb_thread_struct::unblock.
Referenced by garbage_collect_with_gvl(), maygvl_copy_stream_continue_p(), negative_size_allocation_error(), and ruby_memerror().
VALUE rb_thread_call_without_gvl | ( | rb_blocking_function_t * | func, |
void * | data1, | ||
rb_unblock_function_t * | ubf, | ||
void * | data2 | ||
) |
Definition at line 1174 of file thread.c.
References rb_thread_blocking_region().
Definition at line 998 of file thread.c.
References RUBY_VM_CHECK_INTS.
Referenced by bigmul1_normal(), collect_all(), for(), and trap_check().
Definition at line 1008 of file thread.c.
References rb_signal_buff_size().
Referenced by switch(), and trap_check().
Definition at line 658 of file thread.c.
References rb_cThread, rb_thread_alloc(), and thread_create_core().
Referenced by rb_detach_process().
Definition at line 1742 of file thread.c.
References GET_THREAD.
Referenced by chdir_yield(), copy_stream_body(), dir_s_chdir(), if(), rb_dl_get_last_error(), rb_dl_set_last_error(), recursive_list_access(), recursive_pop(), thread_s_current(), VpGetException(), VpGetPrecLimit(), and VpGetRoundMode().
Definition at line 1354 of file thread.c.
References GetThreadPtr, rb_threadptr_execute_interrupts_common(), and th.
Referenced by exec_interrupts(), and maygvl_copy_stream_continue_p().
Definition at line 1586 of file thread.c.
References GET_THREAD, and rb_thread_kill().
Referenced by Init_Thread().
Definition at line 1479 of file thread.c.
References GET_THREAD, st_foreach, and thread_fd_close_i().
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 2769 of file thread.c.
References do_select(), rb_fd_resize, rb_thread_sleep_forever(), and rb_thread_wait_for().
Referenced by maygvl_select(), rb_thread_select(), select_internal(), and select_single().
Definition at line 2718 of file thread.c.
References rb_thread_wait_fd_rw(), and TRUE.
Referenced by io_binwrite(), io_fflush(), rb_io_syswrite(), rb_io_wait_writable(), rsock_bsock_send(), and udp_send().
Definition at line 1884 of file thread.c.
References GetThreadPtr, Qnil, th, and rb_thread_struct::thgroup.
Referenced by Init_Thread().
Definition at line 2038 of file thread.c.
References GetThreadPtr, OBJ_INFECT, rb_obj_classname(), rb_sprintf(), rb_thread_struct::status, status, str, th, and thread_status_name().
Referenced by Init_Thread().
Definition at line 1015 of file thread.c.
References GetThreadPtr, RUBY_VM_INTERRUPTED, and th.
Referenced by maygvl_copy_stream_continue_p().
VALUE rb_thread_io_blocking_region | ( | rb_blocking_function_t * | func, |
void * | data1, | ||
int | fd | ||
) |
Definition at line 1154 of file thread.c.
References BLOCKING_REGION, errno, func, GET_THREAD, th, val, and rb_thread_struct::waiting_fd.
Referenced by do_ioctl(), io_flush_buffer_async(), rb_file_flock(), rb_read_internal(), and rb_write_internal().
Definition at line 2153 of file thread.c.
References GetThreadPtr, rb_thread_struct::local_storage, Qfalse, Qtrue, rb_to_id(), st_lookup, and th.
Referenced by Init_Thread().
Definition at line 2208 of file thread.c.
References ary, GetThreadPtr, rb_thread_struct::local_storage, rb_ary_new(), st_foreach, th, and thread_keys_i().
Referenced by Init_Thread().
Definition at line 1528 of file thread.c.
References eKillSignal, EXIT_SUCCESS, GET_THREAD, GetThreadPtr, rb_vm_struct::main_thread, rb_exit(), rb_secure(), rb_threadptr_interrupt(), rb_thread_struct::safe_level, rb_thread_struct::status, th, thread, thread_debug, rb_thread_struct::thread_id, THREAD_KILLED, THREAD_TO_KILL, rb_thread_struct::thrown_errinfo, and rb_thread_struct::vm.
Referenced by Init_Thread(), rb_thread_exit(), and rb_thread_s_kill().
Definition at line 1734 of file thread.c.
References ary, GET_THREAD, rb_ary_new(), st_foreach, and thread_list_i().
Referenced by Init_Thread().
Definition at line 2054 of file thread.c.
References GET_THREAD, GetThreadPtr, rb_thread_struct::local_storage, Qnil, rb_eSecurityError, rb_raise(), rb_safe_level, st_lookup, th, and val.
Referenced by detach_process_pid(), rb_dl_get_last_error(), rb_thread_aref(), recursive_list_access(), VpGetException(), VpGetPrecLimit(), and VpGetRoundMode().
Definition at line 2103 of file thread.c.
References GET_THREAD, GetThreadPtr, rb_thread_struct::local_storage, NIL_P, OBJ_FROZEN, Qnil, rb_error_frozen(), rb_eSecurityError, rb_raise(), rb_safe_level, st_delete_wrap(), st_init_numtable, st_insert, th, and val.
Referenced by rb_detach_process(), rb_dl_set_last_error(), rb_thread_aset(), and recursive_list_access().
void rb_thread_lock_destroy | ( | rb_thread_lock_t * | lock | ) |
void rb_thread_lock_unlock | ( | rb_thread_lock_t * | lock | ) |
Definition at line 981 of file thread.c.
References GET_THREAD, rb_thread_alone(), RUBY_VM_CHECK_INTS, sleep_for_polling(), and th.
Referenced by rb_f_kill(), and rb_file_flock().
Definition at line 2236 of file thread.c.
References GetThreadPtr, INT2NUM(), rb_thread_struct::priority, and th.
Referenced by Init_Thread().
Definition at line 2271 of file thread.c.
References GetThreadPtr, INT2NUM(), NUM2INT, rb_thread_struct::priority, rb_secure(), RUBY_THREAD_PRIORITY_MAX, RUBY_THREAD_PRIORITY_MIN, and th.
Referenced by Init_Thread().
int rb_thread_remove_event_hook | ( | VALUE | thval, |
rb_event_hook_func_t | func | ||
) |
Definition at line 4326 of file thread.c.
References rb_threadptr_remove_event_hook(), and thval2thread_t().
Definition at line 3055 of file thread.c.
Referenced by after_exec().
Definition at line 1655 of file thread.c.
References rb_thread_schedule(), rb_thread_wakeup(), and thread.
Referenced by if(), and Init_Thread().
Definition at line 1795 of file thread.c.
References GET_THREAD, Qfalse, and Qtrue.
Referenced by Init_Thread().
Definition at line 1826 of file thread.c.
References GET_THREAD, rb_secure(), RTEST, and val.
Referenced by Init_Thread().
Definition at line 2022 of file thread.c.
References GetThreadPtr, INT2NUM(), rb_thread_struct::safe_level, and th.
Referenced by Init_Thread().
Definition at line 1048 of file thread.c.
References GET_THREAD, rb_thread_schedule_limits(), rb_threadptr_execute_interrupts_common(), and UNLIKELY.
Referenced by for(), if(), proc_waitall(), rb_thread_run(), rb_thread_terminate_all(), rb_threadptr_raise(), rb_waitpid(), rbtk_EventCheckProc(), thread_s_pass(), and zstream_run().
Definition at line 1031 of file thread.c.
References GET_THREAD, RB_GC_SAVE_MACHINE_CONTEXT, rb_thread_alone(), rb_thread_set_current, rb_thread_struct::running_time_us, th, thread_debug, and rb_thread_struct::vm.
Referenced by rb_thread_schedule(), and rb_threadptr_execute_interrupts_common().
int rb_thread_select | ( | int | max, |
fd_set * | read, | ||
fd_set * | write, | ||
fd_set * | except, | ||
struct timeval * | timeout | ||
) |
Definition at line 2725 of file thread.c.
References NULL, rb_fd_copy, rb_fd_init, rb_fd_rcopy, rb_fd_term, rb_thread_fd_select(), and retval.
Referenced by old_thread_select().
Definition at line 1023 of file thread.c.
References INT2FIX, rb_thread_wait_for(), and rb_time_timeval().
Referenced by pipe_open().
Definition at line 935 of file thread.c.
References GET_THREAD, sleep_forever(), and thread_debug.
Referenced by rb_mutex_sleep_forever(), and rb_thread_stop().
Definition at line 928 of file thread.c.
References GET_THREAD, sleep_forever(), and thread_debug.
Referenced by for(), rb_f_sleep(), and rb_thread_fd_select().
|
static |
Definition at line 1945 of file thread.c.
References rb_thread_struct::errinfo, FIXNUM_P, GetThreadPtr, NIL_P, Qfalse, Qnil, rb_str_new2(), rb_threadptr_dead(), rb_thread_struct::status, th, and thread_status_name().
Definition at line 1682 of file thread.c.
References Qnil, rb_eThreadError, rb_raise(), rb_thread_alone(), and rb_thread_sleep_deadly().
Referenced by Init_Thread().
Definition at line 1997 of file thread.c.
References GetThreadPtr, Qfalse, Qtrue, rb_threadptr_dead(), rb_thread_struct::status, th, THREAD_STOPPED, and THREAD_STOPPED_FOREVER.
Referenced by Init_Thread().
Definition at line 3047 of file thread.c.
Referenced by before_exec(), and ruby_cleanup().
Definition at line 370 of file thread.c.
References EXEC_TAG, GET_THREAD, rb_vm_struct::inhibit_thread_creation, rb_vm_struct::living_threads, rb_vm_struct::main_thread, POP_TAG, PUSH_TAG, rb_bug(), rb_thread_alone(), rb_thread_schedule(), rb_threadptr_unlock_all_locking_mutexes(), st_foreach, terminate_i(), th, thread_debug, and rb_thread_struct::vm.
Referenced by ruby_cleanup().
Definition at line 2712 of file thread.c.
References rb_thread_wait_fd_rw().
Referenced by copy_stream_fallback_body(), io_bufread(), ossl_ssl_read_internal(), rb_io_read_check(), rb_io_sysread(), rb_io_wait_readable(), rb_read_check(), rsock_s_accept(), and rsock_s_recvfrom().
Definition at line 2689 of file thread.c.
References NULL, rb_eIOError, rb_raise(), rb_sys_fail(), rb_thread_alone(), rb_wait_for_single_fd(), RB_WAITFD_IN, RB_WAITFD_OUT, result, and thread_debug.
Referenced by rb_thread_fd_writable(), and rb_thread_wait_fd().
Definition at line 974 of file thread.c.
References GET_THREAD, sleep_timeval(), and th.
Definition at line 1610 of file thread.c.
References rb_eThreadError, rb_raise(), rb_thread_wakeup_alive(), RTEST, and thread.
Definition at line 1619 of file thread.c.
References GetThreadPtr, Qnil, rb_threadptr_ready(), rb_thread_struct::status, th, thread, THREAD_KILLED, THREAD_RUNNABLE, and THREAD_TO_KILL.
Referenced by rb_thread_wakeup().
|
static |
Definition at line 4132 of file thread.c.
References alloc_event_hook(), rb_thread_struct::event_hooks, rb_event_hook_struct::next, and thread_reset_event_flags().
Referenced by rb_thread_add_event_hook(), and thread_add_trace_func().
void rb_threadptr_check_signal | ( | rb_thread_t * | mth | ) |
Definition at line 3014 of file thread.c.
References rb_signal_buff_size(), and rb_threadptr_interrupt().
Referenced by ruby_cleanup(), and timer_thread_function().
|
static |
Definition at line 1916 of file thread.c.
References rb_thread_struct::status, and THREAD_KILLED.
Referenced by rb_thread_alive_p(), rb_thread_status(), rb_thread_stop_p(), and rb_threadptr_raise().
void rb_threadptr_exec_event_hooks | ( | rb_thread_t * | th, |
rb_event_flag_t | flag, | ||
VALUE | self, | ||
ID | id, | ||
VALUE | klass, | ||
int | pop_p | ||
) |
Definition at line 4235 of file thread.c.
References rb_thread_struct::errinfo, event_call_args::event, EVENT_RUNNING_EVENT_MASK, FALSE, flag, id, event_call_args::id, klass, event_call_args::klass, event_call_args::proc, event_call_args::self, th, event_call_args::th, thread_exec_event_hooks(), and thread_suppress_tracing().
void rb_threadptr_execute_interrupts | ( | rb_thread_t * | th | ) |
Definition at line 1348 of file thread.c.
References rb_threadptr_execute_interrupts_common().
|
static |
Definition at line 1288 of file thread.c.
References ATOMIC_EXCHANGE, rb_thread_struct::cfp, eKillSignal, err, rb_thread_struct::errinfo, eTerminateSignal, EXEC_EVENT_HOOK, INT2FIX, rb_thread_struct::interrupt_flag, rb_vm_struct::main_thread, PRIdVALUE, rb_thread_struct::priority, rb_thread_struct::raised_flag, rb_exc_raise(), rb_gc_finalize_deferred(), rb_get_next_signal(), rb_signal_exec(), rb_thread_schedule_limits(), RUBY_EVENT_SWITCH, rb_thread_struct::running_time_us, rb_control_frame_t::self, rb_thread_struct::status, status, TAG_FATAL, TH_JUMP_TAG, thread_debug, THREAD_RUNNABLE, rb_thread_struct::thrown_errinfo, and rb_thread_struct::vm.
Referenced by rb_thread_execute_interrupts(), rb_thread_schedule(), and rb_threadptr_execute_interrupts().
void rb_threadptr_interrupt | ( | rb_thread_t * | th | ) |
Definition at line 305 of file thread.c.
References rb_unblock_callback::arg, rb_unblock_callback::func, rb_thread_struct::interrupt_lock, RUBY_VM_SET_INTERRUPT, and rb_thread_struct::unblock.
Referenced by rb_thread_kill(), rb_threadptr_check_signal(), rb_threadptr_ready(), ruby_cleanup(), terminate_i(), and thread_start_func_2().
|
static |
Definition at line 1376 of file thread.c.
References exc, Qnil, rb_thread_struct::raised_flag, rb_make_exception(), rb_thread_schedule(), rb_threadptr_dead(), rb_threadptr_ready(), and rb_thread_struct::thrown_errinfo.
Referenced by rb_check_deadlock(), rb_threadptr_signal_exit(), rb_threadptr_signal_raise(), thread_raise_m(), and thread_start_func_2().
|
static |
Definition at line 1370 of file thread.c.
References rb_threadptr_interrupt().
Referenced by rb_thread_wakeup_alive(), and rb_threadptr_raise().
|
static |
Definition at line 4312 of file thread.c.
References defer_remove_event_hook(), rb_thread_struct::event_hooks, EVENT_RUNNING_THREAD, remove_event_hook(), ret, thread_reset_event_flags(), and rb_thread_struct::tracing.
Referenced by clear_trace_func_i(), rb_thread_remove_event_hook(), and thread_set_trace_func_m().
int rb_threadptr_reset_raised | ( | rb_thread_t * | th | ) |
Definition at line 1443 of file thread.c.
References RAISED_EXCEPTION, and rb_thread_struct::raised_flag.
Referenced by error_handle(), setup_exception(), and thread_suppress_tracing().
int rb_threadptr_set_raised | ( | rb_thread_t * | th | ) |
Definition at line 1433 of file thread.c.
References RAISED_EXCEPTION, and rb_thread_struct::raised_flag.
Referenced by error_handle(), setup_exception(), and thread_suppress_tracing().
void rb_threadptr_signal_exit | ( | rb_thread_t * | th | ) |
Definition at line 1407 of file thread.c.
References argv, rb_vm_struct::main_thread, rb_eSystemExit, rb_str_new2(), rb_threadptr_raise(), and rb_thread_struct::vm.
Referenced by rb_signal_exec().
void rb_threadptr_signal_raise | ( | rb_thread_t * | th, |
int | sig | ||
) |
Definition at line 1397 of file thread.c.
References argv, INT2FIX, rb_vm_struct::main_thread, rb_eSignal, rb_threadptr_raise(), and rb_thread_struct::vm.
Referenced by rb_signal_exec().
void rb_threadptr_unlock_all_locking_mutexes | ( | rb_thread_t * | th | ) |
Definition at line 353 of file thread.c.
References err, rb_thread_struct::keeping_mutexes, rb_mutex_struct::next_mutex, rb_bug(), and rb_mutex_unlock_th().
Referenced by rb_thread_terminate_all(), ruby_cleanup(), and thread_start_func_2().
Definition at line 259 of file thread.c.
Referenced by ruby_vm_destruct().
Definition at line 2965 of file thread.c.
References select_args::as, errno, select_args::error, select_args::except, select_args::fd, init_set_fd(), int, NULL, ptr, r, rb_ensure(), RB_WAITFD_IN, RB_WAITFD_OUT, RB_WAITFD_PRI, select_args::read, select_single(), select_single_cleanup(), select_args::tv, and select_args::write.
Referenced by io_wait(), rb_io_wait_readable(), rb_io_wait_writable(), rb_thread_wait_fd_rw(), wait_connectable(), and wait_for_single_fd().
Definition at line 3889 of file thread.c.
References NIL_P, OBJ_ID_EQL, Qfalse, Qtrue, Qundef, rb_hash_lookup, rb_hash_lookup2(), T_HASH, and TYPE.
Referenced by exec_recursive().
Definition at line 3860 of file thread.c.
References hash, ID2SYM, list, NIL_P, OBJ_UNTRUST, Qnil, rb_frame_this_func(), rb_hash_aref(), rb_hash_aset(), rb_hash_new(), rb_thread_current(), rb_thread_local_aref(), rb_thread_local_aset(), sym, T_HASH, and TYPE.
Referenced by exec_recursive().
Definition at line 3955 of file thread.c.
References ID2SYM, Qundef, rb_eTypeError, rb_frame_this_func(), rb_hash_delete(), rb_hash_lookup2(), rb_inspect(), rb_raise(), rb_thread_current(), RHASH_EMPTY_P, StringValuePtr, T_HASH, and TYPE.
Referenced by exec_recursive(), and exec_recursive_i().
Definition at line 3924 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 |
Definition at line 4293 of file thread.c.
References rb_event_hook_struct::flag, rb_event_hook_struct::next, RUBY_EVENT_REMOVED, and xfree.
Referenced by thread_exec_event_hooks().
|
static |
Definition at line 4274 of file thread.c.
References rb_event_hook_struct::flag, rb_event_hook_struct::func, rb_event_hook_struct::next, RUBY_EVENT_REMOVED, and xfree.
Referenced by rb_remove_event_hook(), and rb_threadptr_remove_event_hook().
Definition at line 674 of file thread.c.
References rb_thread_struct::join_list_head, rb_thread_struct::join_list_next, p, Qnil, rb_thread_struct::status, join_arg::target, th, THREAD_KILLED, and join_arg::waiting.
Referenced by thread_join().
|
static |
Definition at line 297 of file thread.c.
References rb_thread_struct::interrupt_lock, and rb_thread_struct::unblock.
Referenced by blocking_region_end(), and rb_mutex_lock().
Definition at line 4603 of file thread.c.
References EVENT_RUNNING_TRACE, func, GET_THREAD, and thread_suppress_tracing().
Referenced by call_trace_func(), and yycompile().
Definition at line 1256 of file thread.c.
References rb_thread_struct::blocking_region_buffer, and th.
Referenced by garbage_collect_with_gvl(), negative_size_allocation_error(), and ruby_memerror().
void ruby_thread_init_stack | ( | rb_thread_t * | th | ) |
Definition at line 433 of file thread.c.
Referenced by Init_BareVM().
void ruby_thread_stack_overflow | ( | rb_thread_t * | th | ) |
Definition at line 1421 of file thread.c.
References rb_thread_struct::errinfo, rb_thread_struct::raised_flag, rb_exc_raise(), sysstack_error, TAG_RAISE, and TH_JUMP_TAG.
Definition at line 4343 of file thread.c.
References EVENT_RUNNING_VM, ST_CONTINUE, ST_STOP, thval2thread_t(), and rb_thread_struct::tracing.
Referenced by vm_event_hooks_running_thread().
|
static |
Definition at line 4332 of file thread.c.
References rb_event_hook_struct::flag, rb_event_hook_struct::next, NULL, and RUBY_EVENT_REMOVED.
Referenced by rb_remove_event_hook().
Definition at line 2931 of file thread.c.
References select_args::as, errno, select_args::error, select_args::except, select_args::fd, r, rb_fd_isset, rb_thread_fd_select(), RB_WAITFD_IN, RB_WAITFD_OUT, RB_WAITFD_PRI, select_args::read, select_args::tv, and select_args::write.
Referenced by rb_wait_for_single_fd().
Definition at line 2953 of file thread.c.
References select_args::except, rb_fd_term, select_args::read, and select_args::write.
Referenced by rb_wait_for_single_fd().
Definition at line 4173 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().
Definition at line 4157 of file thread.c.
References rb_thread_struct::event_flags, GetThreadPtr, key, RUBY_EVENT_VM, ST_CONTINUE, and th.
Referenced by set_threads_event_flags().
Definition at line 4454 of file thread.c.
References call_trace_func(), EVENT_RUNNING_NOTHING, GET_THREAD, NIL_P, Qnil, rb_add_event_hook(), rb_eTypeError, rb_obj_is_proc(), rb_raise(), rb_remove_event_hook(), and RUBY_EVENT_ALL.
Referenced by Init_Thread().
|
static |
Definition at line 278 of file thread.c.
References rb_unblock_callback::arg, arg, func, rb_unblock_callback::func, rb_thread_struct::interrupt_flag, rb_thread_struct::interrupt_lock, RUBY_VM_CHECK_INTS, and rb_thread_struct::unblock.
Referenced by rb_mutex_lock().
|
static |
Definition at line 965 of file thread.c.
References sleep_timeval(), timeval::tv_sec, and timeval::tv_usec.
Referenced by rb_thread_polling().
|
static |
Definition at line 859 of file thread.c.
References rb_check_deadlock(), RUBY_VM_CHECK_INTS, rb_vm_struct::sleeper, rb_thread_struct::status, status, THREAD_STOPPED, THREAD_STOPPED_FOREVER, and rb_thread_struct::vm.
Referenced by rb_thread_sleep_deadly(), rb_thread_sleep_forever(), and thread_join_sleep().
|
static |
Definition at line 896 of file thread.c.
References getclockofday(), RUBY_VM_CHECK_INTS, rb_thread_struct::status, thread_debug, THREAD_STOPPED, timeval::tv_sec, and timeval::tv_usec.
Referenced by rb_thread_wait_for(), sleep_for_polling(), and sleep_wait_for_interrupt().
|
static |
Definition at line 959 of file thread.c.
References double2timeval(), and sleep_timeval().
Referenced by thread_join_sleep().
Definition at line 93 of file thread.c.
References st_delete.
Referenced by rb_thread_local_aset(), thread_create_core(), and thread_start_func_2().
|
static |
Definition at line 3132 of file thread.c.
References GetThreadPtr, key, ST_CONTINUE, th, and thread_cleanup_func_before_exec().
Referenced by rb_thread_atfork_before_exec().
Definition at line 3107 of file thread.c.
References GetThreadPtr, key, rb_mutex_abandon_keeping_mutexes(), rb_mutex_abandon_locking_mutex(), ST_CONTINUE, th, thread_cleanup_func(), and TRUE.
Referenced by rb_thread_atfork().
|
static |
Definition at line 320 of file thread.c.
References eTerminateSignal, GetThreadPtr, key, rb_threadptr_interrupt(), ST_CONTINUE, rb_thread_struct::status, th, thread_debug, THREAD_TO_KILL, and rb_thread_struct::thrown_errinfo.
Referenced by rb_thread_terminate_all().
Definition at line 3311 of file thread.c.
References data, thgroup::enclosed, GetThreadPtr, thgroup::group, OBJ_FROZEN, Qnil, rb_eThreadError, rb_raise(), rb_secure(), th, rb_thread_struct::thgroup, thgroup_data_type, and TypedData_Get_Struct.
Referenced by Init_Thread().
Definition at line 3253 of file thread.c.
References data, thgroup::enclosed, thgroup::group, thgroup_data_type, and TypedData_Get_Struct.
Referenced by Init_Thread().
Definition at line 3273 of file thread.c.
References data, thgroup::enclosed, Qfalse, Qtrue, thgroup_data_type, and TypedData_Get_Struct.
Referenced by Init_Thread().
Definition at line 3222 of file thread.c.
References thgroup_list_params::ary, ary, GET_THREAD, thgroup_list_params::group, rb_ary_new(), st_foreach, and thgroup_list_i().
Referenced by Init_Thread().
Definition at line 3197 of file thread.c.
References ary, GetThreadPtr, thgroup_list_params::group, rb_ary_push(), ST_CONTINUE, th, rb_thread_struct::thgroup, and thread.
Referenced by thgroup_list().
Definition at line 3179 of file thread.c.
References data, thgroup::enclosed, thgroup::group, thgroup_data_type, and TypedData_Make_Struct.
Referenced by Init_Thread().
|
static |
Definition at line 4472 of file thread.c.
References call_trace_func(), rb_eTypeError, rb_obj_is_proc(), rb_raise(), rb_threadptr_add_event_hook(), and RUBY_EVENT_ALL.
Referenced by thread_add_trace_func_m(), and thread_set_trace_func_m().
Definition at line 4490 of file thread.c.
References GetThreadPtr, th, and thread_add_trace_func().
Referenced by Init_Thread().
Definition at line 411 of file thread.c.
References rb_thread_struct::interrupt_lock, rb_thread_struct::locking_mutex, Qfalse, th, and thread_cleanup_func_before_exec().
Referenced by terminate_atfork_i().
Definition at line 400 of file thread.c.
References rb_thread_struct::machine_stack_end, rb_thread_struct::machine_stack_start, rb_thread_struct::status, th, and THREAD_KILLED.
Referenced by terminate_atfork_before_exec_i(), and thread_cleanup_func().
Definition at line 562 of file thread.c.
References args, err, rb_thread_struct::event_flags, rb_thread_struct::first_args, rb_thread_struct::first_func, rb_thread_struct::first_proc, GET_THREAD, GET_VM, GetThreadPtr, rb_thread_struct::interrupt_lock, rb_vm_struct::living_threads, NULL, OBJ_FROZEN, rb_thread_struct::priority, Qfalse, rb_block_proc(), rb_eThreadError, rb_raise(), RUBY_EVENT_VM, rb_thread_struct::self, st_delete_wrap(), st_insert, rb_thread_struct::status, th, rb_thread_struct::thgroup, rb_thread_struct::thread_id, THREAD_KILLED, and rb_thread_struct::vm.
Referenced by rb_thread_create(), thread_initialize(), and thread_start().
Definition at line 4197 of file thread.c.
References event_call_args::event, rb_thread_struct::event_flags, rb_vm_struct::event_hooks, rb_thread_struct::event_hooks, EVENT_RUNNING_THREAD, EVENT_RUNNING_VM, exec_event_hooks(), flag, event_call_args::id, klass, event_call_args::klass, NULL, rb_mRubyVMFrozenCore, remove_defered_event_hook(), removed, RUBY_EVENT_VM, event_call_args::self, event_call_args::th, rb_thread_struct::tracing, and rb_thread_struct::vm.
Referenced by rb_threadptr_exec_event_hooks().
Definition at line 1460 of file thread.c.
References rb_unblock_callback::arg, rb_unblock_callback::func, GetThreadPtr, int, rb_thread_struct::interrupt_lock, ruby_error_closed_stream, RUBY_VM_SET_INTERRUPT, rb_vm_struct::special_exceptions, ST_CONTINUE, th, THREAD_IO_WAITING_P, rb_thread_struct::thrown_errinfo, rb_thread_struct::unblock, rb_thread_struct::vm, and rb_thread_struct::waiting_fd.
Referenced by rb_thread_fd_close().
Definition at line 633 of file thread.c.
References rb_thread_struct::first_args, rb_thread_struct::first_proc, GetThreadPtr, NIL_P, NUM2INT, proc, RARRAY_PTR(), rb_block_given_p(), rb_eThreadError, rb_proc_location(), rb_raise(), RSTRING_PTR, RTEST, th, and thread_create_core().
Referenced by Init_Thread().
|
static |
Definition at line 721 of file thread.c.
References DELAY_INFTY, err, rb_thread_struct::errinfo, FIXNUM_P, join_arg::forever, GET_THREAD, GET_THROWOBJ_STATE, GET_THROWOBJ_VAL, rb_thread_struct::join_list_head, rb_thread_struct::join_list_next, join_arg::limit, Qnil, rb_ensure(), rb_exc_raise(), rb_vm_make_jump_tag_but_local_jump(), remove_from_join_list(), rb_thread_struct::self, rb_thread_struct::status, T_NODE, join_arg::target, th, thread_debug, rb_thread_struct::thread_id, thread_join_sleep(), THREAD_KILLED, timeofday(), TYPE, and join_arg::waiting.
Referenced by thread_join_m(), and thread_value().
Definition at line 804 of file thread.c.
References DELAY_INFTY, GetThreadPtr, join_arg::limit, NIL_P, rb_num2dbl(), rb_scan_args(), and thread_join().
Referenced by Init_Thread().
Definition at line 695 of file thread.c.
References join_arg::forever, join_arg::limit, p, Qfalse, Qtrue, sleep_forever(), sleep_wait_for_interrupt(), rb_thread_struct::status, join_arg::target, th, thread_debug, rb_thread_struct::thread_id, THREAD_KILLED, timeofday(), and join_arg::waiting.
Referenced by thread_join().
Definition at line 2170 of file thread.c.
References ID2SYM, rb_ary_push(), and ST_CONTINUE.
Referenced by rb_thread_keys().
Definition at line 1693 of file thread.c.
References ary, GetThreadPtr, rb_ary_push(), rb_thread_struct::self, ST_CONTINUE, rb_thread_struct::status, th, THREAD_RUNNABLE, THREAD_STOPPED, THREAD_STOPPED_FOREVER, and THREAD_TO_KILL.
Referenced by rb_thread_list().
Definition at line 1506 of file thread.c.
References GetThreadPtr, Qnil, rb_threadptr_raise(), and th.
Referenced by Init_Thread().
|
static |
Definition at line 4118 of file thread.c.
References rb_thread_struct::event_flags, rb_thread_struct::event_hooks, rb_event_hook_struct::flag, flag, rb_event_hook_struct::next, RUBY_EVENT_REMOVED, and RUBY_EVENT_VM.
Referenced by rb_threadptr_add_event_hook(), and rb_threadptr_remove_event_hook().
Definition at line 1757 of file thread.c.
References rb_thread_current().
Referenced by Init_Thread().
Definition at line 598 of file thread.c.
References rb_thread_struct::first_args, GET_VM, GetThreadPtr, rb_class2name(), rb_eThreadError, rb_obj_call_init(), rb_raise(), rb_thread_alloc(), th, and thread.
Referenced by Init_Thread().
Definition at line 1277 of file thread.c.
References Qnil, and rb_thread_schedule().
Referenced by Init_Thread().
Definition at line 4509 of file thread.c.
References call_trace_func(), EVENT_RUNNING_NOTHING, GetThreadPtr, NIL_P, Qnil, rb_threadptr_remove_event_hook(), th, thread_add_trace_func(), and rb_thread_struct::tracing.
Referenced by Init_Thread().
Definition at line 626 of file thread.c.
References rb_thread_alloc(), and thread_create_core().
Referenced by Init_Thread().
|
static |
Definition at line 439 of file thread.c.
References rb_thread_struct::abort_on_exception, rb_proc_t::block, rb_thread_struct::errinfo, EXEC_TAG, rb_thread_struct::first_args, rb_thread_struct::first_func, rb_thread_struct::first_proc, GetProcPtr, rb_thread_struct::join_list_head, rb_thread_struct::join_list_next, rb_block_struct::lfp, rb_vm_struct::living_threads, rb_thread_struct::local_lfp, rb_thread_struct::local_svar, rb_thread_struct::locking_mutex, rb_thread_struct::machine_stack_start, rb_vm_struct::main_thread, NIL_P, PRIxVALUE, proc, Qfalse, Qnil, RARRAY_LEN, RARRAY_PTR(), rb_bug(), rb_check_deadlock(), rb_errinfo, rb_eSecurityError, rb_eSystemExit, rb_exc_new3(), rb_obj_is_kind_of(), rb_sprintf(), rb_thread_recycle_stack_release(), rb_thread_set_current, rb_threadptr_interrupt(), rb_threadptr_raise(), rb_threadptr_unlock_all_locking_mutexes(), rb_vm_invoke_proc(), rb_thread_struct::root_fiber, RTEST, ruby_debug, rb_thread_struct::safe_level, SAVE_ROOT_JMPBUF, rb_block_struct::self, rb_thread_struct::self, st_delete_wrap(), rb_thread_struct::stack, rb_thread_struct::status, T_OBJECT, TAG_FATAL, TH_POP_TAG, TH_PUSH_TAG, rb_vm_struct::thread_abort_on_exception, thread_debug, THREAD_KILLED, THREAD_RUNNABLE, THREAD_STOPPED, THREAD_STOPPED_FOREVER, TYPE, rb_thread_struct::value, and rb_thread_struct::vm.
|
static |
Definition at line 1898 of file thread.c.
References THREAD_KILLED, THREAD_RUNNABLE, THREAD_STOPPED, THREAD_STOPPED_FOREVER, and THREAD_TO_KILL.
Referenced by rb_thread_inspect(), and rb_thread_status().
|
static |
Definition at line 4610 of file thread.c.
References arg, rb_thread_struct::cfp, ev, EXEC_TAG, JUMP_TAG, POP_TAG, PUSH_TAG, Qnil, rb_threadptr_reset_raised(), rb_threadptr_set_raised(), result, RUBY_VM_PREVIOUS_CONTROL_FRAME, rb_thread_struct::state, and rb_thread_struct::tracing.
Referenced by rb_threadptr_exec_event_hooks(), and ruby_suppress_tracing().
Definition at line 832 of file thread.c.
References DELAY_INFTY, GetThreadPtr, th, thread_join(), and rb_thread_struct::value.
Referenced by Init_Thread().
|
static |
Definition at line 4142 of file thread.c.
References GetThreadPtr, and th.
Referenced by rb_thread_add_event_hook(), rb_thread_remove_event_hook(), and running_vm_event_hooks().
|
static |
Definition at line 942 of file thread.c.
References e, gettimeofday(), NULL, timespec::tv_nsec, timeval::tv_sec, timespec::tv_sec, and timeval::tv_usec.
Referenced by do_select(), thread_join(), and thread_join_sleep().
Definition at line 3024 of file thread.c.
References GET_VM, rb_vm_struct::main_thread, rb_threadptr_check_signal(), RUBY_VM_SET_TIMER_INTERRUPT, rb_vm_struct::running_thread, and th.
|
static |
Definition at line 4869 of file thread.c.
References count, coverage(), FIX2LONG, GET_THREAD, LONG2FIX, POSFIXABLE, Qnil, RARRAY_PTR(), rb_sourceline(), and RBASIC.
Referenced by rb_reset_coverages(), and rb_set_coverages().
|
static |
Definition at line 4352 of file thread.c.
References rb_vm_struct::living_threads, NULL, running_vm_event_hooks(), and st_foreach.
Referenced by rb_remove_event_hook().
Definition at line 2177 of file thread.c.
References rb_vm_struct::living_threads, and st_table::num_entries.
Referenced by rb_check_deadlock(), rb_mutex_lock(), and rb_thread_alone().
|
static |
|
static |
rb_thread_t* patrol_thread = NULL |
VALUE rb_cBarrier |
Definition at line 76 of file thread.c.
Referenced by rb_barrier_new().
VALUE rb_cMutex |
Definition at line 75 of file thread.c.
Referenced by Init_Thread(), and rb_mutex_new().
|
static |
Definition at line 88 of file thread.c.
Referenced by rb_thread_start_timer_thread().
|
static |
Definition at line 3161 of file thread.c.
Referenced by thgroup_add(), thgroup_enclose(), thgroup_enclosed_p(), and thgroup_s_alloc().