|
Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
|
#include "ruby/ruby.h"#include "ruby/ractor.h"#include "vm_core.h"#include "id_table.h"#include "vm_debug.h"Go to the source code of this file.
Data Structures | |
| struct | rb_ractor_basket |
| struct | rb_ractor_queue |
| struct | rb_ractor_waiting_list |
| struct | rb_ractor_sync |
| struct | rb_ractor_sync::ractor_wait |
| struct | rb_ractor_struct |
| struct | rb_ractor_struct::gc_mark_func_data_struct |
Macros | |
| #define | RACTOR_CHECK_MODE (0 || VM_CHECK_MODE || RUBY_DEBUG) |
| #define | rb_ractor_confirm_belonging(obj) obj |
Enumerations | |
| enum | rb_ractor_basket_type { basket_type_none , basket_type_ref , basket_type_copy , basket_type_move , basket_type_will , basket_type_deleted , basket_type_reserved } |
| #define RACTOR_CHECK_MODE (0 || VM_CHECK_MODE || RUBY_DEBUG) |
Definition at line 8 of file ractor_core.h.
| #define rb_ractor_confirm_belonging | ( | obj | ) | obj |
Definition at line 340 of file ractor_core.h.
| Enumerator | |
|---|---|
| basket_type_none | |
| basket_type_ref | |
| basket_type_copy | |
| basket_type_move | |
| basket_type_will | |
| basket_type_deleted | |
| basket_type_reserved | |
Definition at line 11 of file ractor_core.h.
| void rb_ractor_atexit | ( | rb_execution_context_t * | ec, |
| VALUE | result | ||
| ) |
| void rb_ractor_atexit_exception | ( | rb_execution_context_t * | ec | ) |
Definition at line 1675 of file ractor.c.
References rb_execution_context_struct::errinfo.
| void rb_ractor_atfork | ( | rb_vm_t * | vm, |
| rb_thread_t * | th | ||
| ) |
| void rb_ractor_blocking_threads_dec | ( | rb_ractor_t * | r, |
| const char * | file, | ||
| int | line | ||
| ) |
Definition at line 1870 of file ractor.c.
References rb_ractor_struct::blocking_cnt, rb_ractor_struct::cnt, RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, rb_vm_ractor_blocking_cnt_dec(), RUBY_DEBUG_LOG2, rb_ractor_struct::threads, and VM_ASSERT.
| void rb_ractor_blocking_threads_inc | ( | rb_ractor_t * | r, |
| const char * | file, | ||
| int | line | ||
| ) |
Definition at line 1858 of file ractor.c.
References rb_ractor_struct::blocking_cnt, rb_ractor_struct::cnt, RUBY_DEBUG_LOG2, rb_ractor_struct::threads, and VM_ASSERT.
Definition at line 2518 of file ractor.c.
References name, PRIsVALUE, rb_eRactorIsolationError, rb_exc_new_str(), rb_exc_raise(), and rb_sprintf().
| void rb_ractor_finish_marking | ( | void | ) |
Definition at line 3215 of file ractor.c.
References DEFAULT_KEYS_CAPA, REALLOC_N, and ruby_xfree().
| rb_global_vm_lock_t * rb_ractor_gvl | ( | rb_ractor_t * | r | ) |
Definition at line 1715 of file ractor.c.
References rb_ractor_struct::gvl, and rb_ractor_struct::threads.
Referenced by Init_Thread().
| int rb_ractor_living_thread_num | ( | const rb_ractor_t * | r | ) |
Definition at line 1721 of file ractor.c.
References rb_ractor_struct::cnt, and rb_ractor_struct::threads.
Referenced by rb_nogvl(), rb_thread_alone(), and rb_thread_terminate_all().
| void rb_ractor_living_threads_init | ( | rb_ractor_t * | r | ) |
Definition at line 1546 of file ractor.c.
References rb_ractor_struct::blocking_cnt, rb_ractor_struct::cnt, rb_ractor_struct::set, and rb_ractor_struct::threads.
| void rb_ractor_living_threads_insert | ( | rb_ractor_t * | r, |
| rb_thread_t * | th | ||
| ) |
Definition at line 1760 of file ractor.c.
References rb_ractor_struct::cnt, rb_ractor_pub::id, rb_thread_struct::lt_node, NULL, rb_ractor_struct::pub, RACTOR_LOCK, RACTOR_UNLOCK, RUBY_DEBUG_LOG, rb_ractor_struct::set, rb_ractor_struct::threads, rb_thread_struct::vm, and VM_ASSERT.
Referenced by rb_ractor_main_setup().
| void rb_ractor_living_threads_remove | ( | rb_ractor_t * | r, |
| rb_thread_t * | th | ||
| ) |
Definition at line 1838 of file ractor.c.
References rb_ractor_struct::cnt, rb_thread_struct::lt_node, RACTOR_LOCK, RACTOR_UNLOCK, RUBY_DEBUG_LOG, rb_ractor_struct::threads, rb_thread_struct::vm, and VM_ASSERT.
| void rb_ractor_local_storage_delkey | ( | rb_ractor_local_key_t | key | ) |
Definition at line 3112 of file ractor.c.
References key, RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, and REALLOC_N.
| rb_ractor_t * rb_ractor_main_alloc | ( | void | ) |
Definition at line 1508 of file ractor.c.
References EXIT_FAILURE, rb_ractor_pub::id, rb_ractor_struct::loc, MEMZERO, rb_ractor_struct::name, NULL, rb_ractor_struct::pub, Qnil, ruby_mimmalloc(), ruby_single_main_ractor, and rb_ractor_pub::self.
Referenced by Init_BareVM().
| void rb_ractor_main_setup | ( | rb_vm_t * | vm, |
| rb_ractor_t * | main_ractor, | ||
| rb_thread_t * | main_thread | ||
| ) |
Definition at line 1581 of file ractor.c.
References FL_SET_RAW, rb_ractor_struct::main, rb_ractor_struct::pub, Qnil, rb_cRactor, rb_ractor_living_threads_insert(), RUBY_FL_SHAREABLE, rb_ractor_pub::self, rb_ractor_struct::threads, and TypedData_Wrap_Struct.
Referenced by Init_VM().
| void rb_ractor_receive_parameters | ( | rb_execution_context_t * | ec, |
| rb_ractor_t * | g, | ||
| int | len, | ||
| VALUE * | ptr | ||
| ) |
| void rb_ractor_send_parameters | ( | rb_execution_context_t * | ec, |
| rb_ractor_t * | g, | ||
| VALUE | args | ||
| ) |
Definition at line 1690 of file ractor.c.
References len, and RARRAY_AREF.
| void rb_ractor_teardown | ( | rb_execution_context_t * | ec | ) |
Definition at line 1652 of file ractor.c.
References rb_ractor_struct::main, NULL, RB_VM_LOCK_ENTER, RB_VM_LOCK_LEAVE, rb_ractor_struct::threads, and VM_ASSERT.
| void rb_ractor_terminate_all | ( | void | ) |
Definition at line 1946 of file ractor.c.
References rb_vm_struct::cnt, rb_vm_struct::main_ractor, rb_vm_struct::ractor, rb_thread_terminate_all(), rb_vm_cond_timedwait(), RB_VM_LOCK, rb_vm_ractor_blocking_cnt_dec(), rb_vm_ractor_blocking_cnt_inc(), RB_VM_UNLOCK, RUBY_DEBUG_LOG, rb_vm_struct::sync, rb_vm_struct::terminate_cond, rb_vm_struct::terminate_waiting, and VM_ASSERT.
| void rb_ractor_terminate_interrupt_main_thread | ( | rb_ractor_t * | r | ) |
Definition at line 1911 of file ractor.c.
References ASSERT_vm_locking, rb_thread_struct::ec, rb_ractor_struct::main, rb_threadptr_interrupt(), RUBY_DEBUG_LOG, RUBY_VM_SET_TERMINATE_INTERRUPT, THREAD_KILLED, rb_ractor_struct::threads, and VM_ASSERT.
| VALUE rb_ractor_thread_list | ( | rb_ractor_t * | r | ) |
Definition at line 1727 of file ractor.c.
References ALLOCA_N, rb_ractor_struct::cnt, RACTOR_LOCK, RACTOR_UNLOCK, rb_ary_new(), rb_ary_push(), rb_thread_struct::self, rb_ractor_struct::set, THREAD_RUNNABLE, THREAD_STOPPED, THREAD_STOPPED_FOREVER, and rb_ractor_struct::threads.
Referenced by rb_thread_list().
| void rb_ractor_vm_barrier_interrupt_running_thread | ( | rb_ractor_t * | r | ) |
Definition at line 1892 of file ractor.c.
References ASSERT_vm_locking, RACTOR_LOCK, RACTOR_UNLOCK, RUBY_VM_SET_VM_BARRIER_INTERRUPT, rb_ractor_struct::running_ec, rb_ractor_struct::threads, and VM_ASSERT.
Referenced by rb_vm_barrier().
| VALUE rb_thread_create_ractor | ( | rb_ractor_t * | g, |
| VALUE | args, | ||
| VALUE | proc | ||
| ) |
Definition at line 1130 of file thread.c.
References thread_create_params::args, g, thread_create_params::proc, rb_cThread, rb_thread_alloc(), and thread_create_params::type.
| void rb_vm_ractor_blocking_cnt_dec | ( | rb_vm_t * | vm, |
| rb_ractor_t * | cr, | ||
| const char * | file, | ||
| int | line | ||
| ) |
Definition at line 1798 of file ractor.c.
References ASSERT_vm_locking, rb_vm_struct::blocking_cnt, rb_vm_struct::ractor, RUBY_DEBUG_LOG2, and VM_ASSERT.
Referenced by rb_ractor_blocking_threads_dec(), rb_ractor_terminate_all(), and rb_vm_barrier().
| void rb_vm_ractor_blocking_cnt_inc | ( | rb_vm_t * | vm, |
| rb_ractor_t * | cr, | ||
| const char * | file, | ||
| int | line | ||
| ) |
Definition at line 1790 of file ractor.c.
References ASSERT_vm_locking, and VM_ASSERT.
Referenced by rb_ractor_terminate_all(), and rb_vm_barrier().