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().