Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
signal.c File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

#include "ruby/internal/config.h"
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include "debug_counter.h"
#include "eval_intern.h"
#include "internal.h"
#include "internal/eval.h"
#include "internal/sanitizers.h"
#include "internal/signal.h"
#include "internal/string.h"
#include "internal/thread.h"
#include "ruby_atomic.h"
#include "vm_core.h"
#include "ractor_core.h"
Include dependency graph for signal.c:

Go to the source code of this file.

Data Structures

struct  signals
 

Macros

#define FOREACH_SIGNAL(sig, offset)   for (sig = siglist + (offset); sig < siglist + numberof(siglist); ++sig)
 
#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 GET_SIGCHLD_HIT()   0
 
#define clear_received_signal()   ((void)0)
 
#define CHECK_STACK_OVERFLOW()   (void)0
 
#define MESSAGE_FAULT_ADDRESS
 
#define INSTALL_SIGHANDLER(cond, signame, signum)
 
#define install_sighandler(signum, handler)   INSTALL_SIGHANDLER(install_sighandler_core(signum, handler, NULL), #signum, signum)
 
#define force_install_sighandler(signum, handler, old_handler)   INSTALL_SIGHANDLER(install_sighandler_core(signum, handler, old_handler), #signum, signum)
 
#define grantpt(fd)   fake_grantfd(fd)
 

Typedefs

typedef void ruby_sigaction_t(int)
 

Enumerations

enum  { LONGEST_SIGNAME = 7 }
 

Functions

const char * ruby_signal_name (int no)
 
void rb_malloc_info_show_results (void)
 
void ruby_default_signal (int sig)
 
VALUE rb_f_kill (int argc, const VALUE *argv)
 
int rb_signal_buff_size (void)
 
int rb_get_next_signal (void)
 
void rb_vm_trap_exit (rb_vm_t *vm)
 
void ruby_waitpid_all (rb_vm_t *)
 
void ruby_sigchld_handler (rb_vm_t *vm)
 
int rb_signal_exec (rb_thread_t *th, int sig)
 
void ruby_sig_finalize (void)
 
void Init_signal (void)
 
int rb_grantpt (int masterfd)
 

Variables

int ruby_enable_coredump = 0
 

Macro Definition Documentation

◆ CHECK_STACK_OVERFLOW

#define CHECK_STACK_OVERFLOW ( )    (void)0

Definition at line 920 of file signal.c.

◆ clear_received_signal

#define clear_received_signal ( )    ((void)0)

Definition at line 794 of file signal.c.

◆ force_install_sighandler

#define force_install_sighandler (   signum,
  handler,
  old_handler 
)    INSTALL_SIGHANDLER(install_sighandler_core(signum, handler, old_handler), #signum, signum)

Definition at line 1474 of file signal.c.

◆ FOREACH_SIGNAL

#define FOREACH_SIGNAL (   sig,
  offset 
)    for (sig = siglist + (offset); sig < siglist + numberof(siglist); ++sig)

Definition at line 69 of file signal.c.

◆ GET_SIGCHLD_HIT

#define GET_SIGCHLD_HIT ( )    0

Definition at line 715 of file signal.c.

◆ grantpt

#define grantpt (   fd)    fake_grantfd(fd)

Definition at line 1620 of file signal.c.

◆ INSTALL_SIGHANDLER

#define INSTALL_SIGHANDLER (   cond,
  signame,
  signum 
)
Value:
do { \
static const char failed[] = "failed to install "signame" handler"; \
if (!(cond)) break; \
if (reserved_signal_p(signum)) rb_bug(failed); \
perror(failed); \
} while (0)

Definition at line 1447 of file signal.c.

◆ install_sighandler

#define install_sighandler (   signum,
  handler 
)    INSTALL_SIGHANDLER(install_sighandler_core(signum, handler, NULL), #signum, signum)

Definition at line 1472 of file signal.c.

◆ killpg

#define killpg (   pg,
  sig 
)    kill(-(pg), (sig))

◆ MESSAGE_FAULT_ADDRESS

#define MESSAGE_FAULT_ADDRESS

Definition at line 923 of file signal.c.

◆ ruby_signal

#define ruby_signal (   sig,
  handler 
)    (/* rb_trap_accept_nativethreads[(sig)] = 0,*/ signal((sig),(handler)))

Definition at line 671 of file signal.c.

◆ sighandler_t

#define sighandler_t   ruby_sighandler_t

Definition at line 515 of file signal.c.

◆ SIGINFO_ARG

#define SIGINFO_ARG

Definition at line 523 of file signal.c.

◆ SIGINFO_CTX

#define SIGINFO_CTX   0

Definition at line 524 of file signal.c.

Typedef Documentation

◆ ruby_sigaction_t

typedef void ruby_sigaction_t(int)

Definition at line 522 of file signal.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
LONGEST_SIGNAME 

Definition at line 71 of file signal.c.

Function Documentation

◆ Init_signal()

void Init_signal ( void  )

Definition at line 1548 of file signal.c.

References rb_define_global_function, and rb_define_module().

◆ rb_f_kill()

VALUE rb_f_kill ( int  argc,
const VALUE argv 
)

Definition at line 423 of file signal.c.

References argc, argv, FIX2INT, FIXNUM_P, rb_check_arity, str, and UNLIMITED_ARGUMENTS.

◆ rb_get_next_signal()

int rb_get_next_signal ( void  )

Definition at line 773 of file signal.c.

◆ rb_grantpt()

int rb_grantpt ( int  masterfd)

◆ rb_malloc_info_show_results()

void rb_malloc_info_show_results ( void  )

Definition at line 11633 of file gc.c.

Referenced by ruby_default_signal().

◆ rb_signal_buff_size()

int rb_signal_buff_size ( void  )

Definition at line 747 of file signal.c.

Referenced by rb_thread_check_trap_pending(), and rb_threadptr_check_signal().

◆ rb_signal_exec()

int rb_signal_exec ( rb_thread_t th,
int  sig 
)

◆ rb_vm_trap_exit()

void rb_vm_trap_exit ( rb_vm_t vm)

Definition at line 1078 of file signal.c.

References rb_vm_struct::cmd, and rb_vm_struct::trap_list.

◆ ruby_default_signal()

void ruby_default_signal ( int  sig)

Definition at line 407 of file signal.c.

References rb_debug_counter_show_results(), and rb_malloc_info_show_results().

◆ ruby_sigchld_handler()

void ruby_sigchld_handler ( rb_vm_t vm)

Definition at line 1091 of file signal.c.

References GET_SIGCHLD_HIT, ruby_waitpid_all(), and SIGCHLD_LOSSY.

◆ ruby_signal_name()

const char* ruby_signal_name ( int  no)

Definition at line 316 of file signal.c.

◆ ruby_waitpid_all()

void ruby_waitpid_all ( rb_vm_t )

Variable Documentation

◆ cnt

rb_atomic_t cnt[RUBY_NSIG]

◆ ruby_enable_coredump

int ruby_enable_coredump = 0

Definition at line 1508 of file signal.c.

Referenced by ruby_env_debug_option().

◆ size

rb_atomic_t size
rb_bug
void rb_bug(const char *fmt,...)
Definition: error.c:796