Ruby
2.4.2p198(2017-09-14revision59899)
|
#include "internal.h"
#include "vm_core.h"
#include <signal.h>
#include <stdio.h>
#include <errno.h>
#include "ruby_atomic.h"
#include "eval_intern.h"
Go to the source code of this file.
Data Structures | |
struct | signals |
Macros | |
#define | VALGRIND_MAKE_MEM_DEFINED(p, n) 0 |
#define | VALGRIND_MAKE_MEM_UNDEFINED(p, n) 0 |
#define | id_signo ruby_static_id_signo |
#define | killpg(pg, sig) kill(-(pg), (sig)) |
#define | sighandler_t ruby_sighandler_t |
#define | SIGINFO_ARG |
#define | SIGINFO_CTX 0 |
#define | ruby_signal(sig, handler) (/* rb_trap_accept_nativethreads[(sig)] = 0,*/ signal((sig),(handler))) |
#define | clear_received_signal() ((void)0) |
#define | CHECK_STACK_OVERFLOW() (void)0 |
#define | MESSAGE_FAULT_ADDRESS |
#define | install_sighandler(signum, handler) (install_sighandler(signum, handler) ? rb_bug(#signum) : (void)0) |
#define | ruby_enable_coredump 0 |
Typedefs | |
typedef RETSIGTYPE(* | sighandler_t) (int) |
typedef RETSIGTYPE | ruby_sigaction_t(int) |
Variables | |
ID | ruby_static_id_signo |
static const struct signals | siglist [] |
static const char | signame_prefix [3] = "SIG" |
struct { | |
rb_atomic_t cnt [RUBY_NSIG] | |
rb_atomic_t size | |
} | signal_buff |
int | ruby_enable_coredump = 0 |
#define id_signo ruby_static_id_signo |
Definition at line 49 of file signal.c.
Referenced by esignal_init(), and esignal_signo().
#define install_sighandler | ( | signum, | |
handler | |||
) | (install_sighandler(signum, handler) ? rb_bug(#signum) : (void)0) |
Definition at line 1380 of file signal.c.
Referenced by Init_signal().
#define killpg | ( | pg, | |
sig | |||
) | kill(-(pg), (sig)) |
Referenced by rb_f_kill().
#define ruby_enable_coredump 0 |
Definition at line 1418 of file signal.c.
Referenced by set_debug_option().
#define ruby_signal | ( | sig, | |
handler | |||
) | (/* rb_trap_accept_nativethreads[(sig)] = 0,*/ signal((sig),(handler))) |
Definition at line 655 of file signal.c.
Referenced by install_sighandler(), ruby_sig_finalize(), sighandler(), and trap().
#define sighandler_t ruby_sighandler_t |
Definition at line 532 of file signal.c.
Referenced by default_handler(), Init_signal(), install_sighandler(), rb_signal_exec(), ruby_sig_finalize(), sig_trap(), signal_ignored(), trap(), and trap_handler().
#define VALGRIND_MAKE_MEM_DEFINED | ( | p, | |
n | |||
) | 0 |
Definition at line 40 of file signal.c.
Referenced by signal_ignored().
|
static |
Definition at line 1053 of file signal.c.
References func, sighandler(), sighandler_t, and SIGINT.
Referenced by trap_handler().
Definition at line 289 of file signal.c.
References id_signo, INT2NUM, len, NIL_P, NSIG, NUM2INT, PRIsVALUE, Qnil, rb_call_super(), rb_check_arity, rb_check_to_integer(), rb_eArgError, rb_ivar_set(), rb_raise(), rb_signo2signm(), rb_sprintf(), rb_sym2str, RSTRING_PTR, signame_prefix, signals::signm, signm2signo(), signals::signo, StringValue, and SYMBOL_P.
Referenced by Init_signal().
Definition at line 343 of file signal.c.
References id_signo, and rb_ivar_get().
Referenced by Init_signal().
void Init_signal | ( | void | ) |
Definition at line 1459 of file signal.c.
References esignal_init(), esignal_signo(), GET_THREAD, install_sighandler, interrupt_init(), rb_alias(), rb_define_global_function(), rb_define_method(), rb_define_module(), rb_define_module_function(), rb_disable_interrupt(), rb_eInterrupt, rb_enable_interrupt(), rb_eSignal, rb_intern_const, sig_list(), sig_signame(), sig_trap(), sighandler(), sighandler_t, and SIGINT.
|
static |
Definition at line 1367 of file signal.c.
References ruby_signal, and sighandler_t.
Definition at line 350 of file signal.c.
References INT2FIX, rb_call_super(), rb_scan_args(), and SIGINT.
Referenced by Init_signal().
|
static |
|
static |
Definition at line 407 of file signal.c.
References argc, FIX2INT, GET_THREAD, GET_VM, INT2FIX, kill(), killpg, NIL_P, NUM2PIDT, PRIsVALUE, rb_check_arity, rb_check_string_type(), rb_eArgError, rb_obj_classname(), rb_raise(), rb_str_subseq(), rb_sym2str, rb_sys_fail(), rb_thread_current(), rb_thread_execute_interrupts(), rb_threadptr_check_signal(), RSTRING_LEN, RSTRING_PTR, ruby_kill(), SIGKILL, signal_enque(), signal_ignored(), signame_prefix, signm2signo(), T_FIXNUM, T_STRING, T_SYMBOL, TYPE, and UNLIMITED_ARGUMENTS.
Referenced by InitVM_process().
int rb_get_next_signal | ( | void | ) |
Definition at line 739 of file signal.c.
References ATOMIC_DEC, RUBY_NSIG, and signal_buff.
Referenced by rb_threadptr_execute_interrupts().
int rb_signal_buff_size | ( | void | ) |
Definition at line 709 of file signal.c.
References signal_buff.
Referenced by rb_thread_check_trap_pending(), and rb_threadptr_check_signal().
void rb_signal_exec | ( | rb_thread_t * | th, |
int | sig | ||
) |
Definition at line 1011 of file signal.c.
References rb_vm_struct::cmd, GET_VM, Qundef, rb_interrupt(), rb_threadptr_signal_exit(), rb_threadptr_signal_raise(), rb_vm_struct::safe, sighandler_t, SIGINT, signal_exec(), and rb_vm_struct::trap_list.
Referenced by rb_threadptr_execute_interrupts().
|
static |
Definition at line 268 of file signal.c.
References rb_sprintf(), signals::signm, and signo2signm().
Referenced by esignal_init(), and trap().
void rb_trap_exit | ( | void | ) |
Definition at line 999 of file signal.c.
References rb_vm_struct::cmd, GET_VM, rb_vm_struct::safe, signal_exec(), and rb_vm_struct::trap_list.
Referenced by ruby_finalize_0().
|
static |
Definition at line 1251 of file signal.c.
Referenced by sig_trap().
rb_atomic_t ruby_atomic_compare_and_swap | ( | rb_atomic_t * | ptr, |
rb_atomic_t | cmp, | ||
rb_atomic_t | newval | ||
) |
rb_atomic_t ruby_atomic_exchange | ( | rb_atomic_t * | ptr, |
rb_atomic_t | val | ||
) |
void ruby_default_signal | ( | int | sig | ) |
Definition at line 360 of file signal.c.
References sighandler(), signal_enque(), and signal_ignored().
Referenced by ruby_cleanup().
const char* ruby_signal_name | ( | int | no | ) |
|
static |
Definition at line 1355 of file signal.c.
References INT2FIX, rb_fstring_cstr(), rb_hash_aset(), rb_hash_new(), siglist, signals::signm, and signals::signo.
Referenced by Init_signal().
Definition at line 254 of file signal.c.
References NUM2INT, Qnil, rb_str_new_cstr(), and signo2signm().
Referenced by Init_signal().
Definition at line 1312 of file signal.c.
References func, OBJ_TAINTED, rb_block_proc(), rb_check_arity, rb_eArgError, rb_eSecurityError, rb_raise(), reserved_signal_p(), sighandler(), sighandler_t, signo2signm(), trap(), trap_handler(), and trap_signm().
Referenced by Init_signal().
|
static |
Definition at line 695 of file signal.c.
References errno, rb_thread_wakeup_timer_thread(), ruby_signal, and signal_enque().
Referenced by default_handler(), Init_signal(), ruby_default_signal(), ruby_sig_finalize(), sig_trap(), signal_ignored(), trap(), and trap_handler().
|
static |
Definition at line 688 of file signal.c.
References ATOMIC_INC, and signal_buff.
Referenced by rb_f_kill(), ruby_default_signal(), and sighandler().
|
static |
Definition at line 967 of file signal.c.
References EXEC_TAG, GET_THREAD, IMMEDIATE_P, INT2NUM, rb_thread_struct::interrupt_mask, rb_ary_new3, rb_eval_cmd(), TH_JUMP_TAG, TH_POP_TAG, TH_PUSH_TAG, and TRAP_INTERRUPT_MASK.
Referenced by rb_signal_exec(), and rb_trap_exit().
|
static |
Definition at line 670 of file signal.c.
References FALSE, func, NULL, sighandler(), sighandler_t, and VALGRIND_MAKE_MEM_DEFINED.
Referenced by rb_f_kill(), and ruby_default_signal().
|
static |
Definition at line 218 of file signal.c.
References siglist, signals::signm, and signals::signo.
Referenced by esignal_init(), rb_f_kill(), and trap_signm().
|
static |
Definition at line 229 of file signal.c.
References siglist, signals::signm, and signals::signo.
Referenced by rb_signo2signm(), ruby_signal_name(), sig_signame(), and sig_trap().
|
static |
Definition at line 1210 of file signal.c.
References rb_vm_struct::cmd, GET_VM, Qnil, Qtrue, Qundef, rb_safe_level(), rb_signo2signm(), rb_str_new2, rb_sys_fail_str(), ruby_signal, rb_vm_struct::safe, sighandler(), sighandler_t, and rb_vm_struct::trap_list.
Referenced by sig_trap().
|
static |
Definition at line 1107 of file signal.c.
References default_handler(), func, GetProcPtr, len, memcmp(), NIL_P, Qtrue, Qundef, rb_check_string_type(), rb_eArgError, rb_raise(), rb_sym2str, RSTRING_GETMEM, SafeStringValue, sighandler(), sighandler_t, and SYMBOL_P.
Referenced by sig_trap().
|
static |
Definition at line 1175 of file signal.c.
References FIX2INT, NSIG, PRIsVALUE, rb_eArgError, rb_raise(), rb_str_subseq(), rb_sym2str, RSTRING_LEN, RSTRING_PTR, signame_prefix, signm2signo(), StringValuePtr, T_FIXNUM, T_SYMBOL, and TYPE.
Referenced by sig_trap().
rb_atomic_t cnt[RUBY_NSIG] |
Definition at line 525 of file signal.c.
Referenced by compile_dregx(), compile_dstr(), compile_dstr_fragments(), compile_flip_flop(), descending_factorial(), ISEQ_FLIP_CNT_INCREMENT(), local_tbl_gen(), newobj_of(), rb_alloc_tmp_buffer(), rb_alloc_tmp_buffer2(), rb_alloc_tmp_buffer_with_count(), rb_ary_rotate_m(), rb_env_size(), rb_gc_unprotect_logging(), rb_parser_calloc(), rb_parser_malloc(), rb_parser_realloc(), rb_print_backtrace(), swallow(), and warn_unused_var().
Referenced by sig_list(), signm2signo(), and signo2signm().
struct { ... } signal_buff |
Referenced by rb_get_next_signal(), rb_signal_buff_size(), and signal_enque().
|
static |
Definition at line 215 of file signal.c.
Referenced by esignal_init(), rb_f_kill(), and trap_signm().
rb_atomic_t size |