Ruby  1.9.3p551(2014-11-13revision48407)
Data Structures | Macros | Typedefs | Functions | Variables
signal.c File Reference
#include "ruby/ruby.h"
#include "vm_core.h"
#include <signal.h>
#include <stdio.h>
#include <errno.h>
#include "ruby_atomic.h"

Go to the source code of this file.

Data Structures

struct  signals
 
struct  trap_arg
 

Macros

#define USE_TRAP_MASK   0
 
#define killpg(pg, sig)   kill(-(pg), (sig))
 
#define SIGINFO_ARG
 
#define ruby_signal(sig, handler)   (/* rb_trap_accept_nativethreads[(sig)] = 0,*/ signal((sig),(handler)))
 
#define CHECK_STACK_OVERFLOW()   (void)0
 
#define ruby_enable_coredump   0
 

Typedefs

typedef RETSIGTYPE(* sighandler_t )(int)
 
typedef RETSIGTYPE ruby_sigaction_t (int)
 

Functions

rb_atomic_t ruby_atomic_exchange (rb_atomic_t *ptr, rb_atomic_t val)
 
rb_atomic_t ruby_atomic_compare_and_swap (rb_atomic_t *ptr, rb_atomic_t cmp, rb_atomic_t newval)
 
static int signm2signo (const char *nm)
 
static const char * signo2signm (int no)
 
const char * ruby_signal_name (int no)
 
static VALUE esignal_init (int argc, VALUE *argv, VALUE self)
 
static VALUE esignal_signo (VALUE self)
 
static VALUE interrupt_init (int argc, VALUE *argv, VALUE self)
 
void ruby_default_signal (int sig)
 
VALUE rb_f_kill (int argc, VALUE *argv)
 
static RETSIGTYPE sighandler (int sig)
 
int rb_signal_buff_size (void)
 
void rb_disable_interrupt (void)
 
void rb_enable_interrupt (void)
 
int rb_get_next_signal (void)
 
static void signal_exec (VALUE cmd, int safe, int sig)
 
void rb_trap_exit (void)
 
void rb_signal_exec (rb_thread_t *th, int sig)
 
static sighandler_t default_handler (int sig)
 
static sighandler_t trap_handler (VALUE *cmd, int sig)
 
static int trap_signm (VALUE vsig)
 
static VALUE trap (struct trap_arg *arg)
 
void rb_trap_restore_mask (void)
 
static VALUE sig_trap (int argc, VALUE *argv)
 
static VALUE sig_list (void)
 
static void install_sighandler (int signum, sighandler_t handler)
 
void ruby_sig_finalize (void)
 
void Init_signal (void)
 

Variables

static struct signals siglist []
 
struct {
   rb_atomic_t   cnt [RUBY_NSIG]
 
   rb_atomic_t   size
 
signal_buff
 
int ruby_enable_coredump = 0
 

Macro Definition Documentation

#define CHECK_STACK_OVERFLOW ( )    (void)0

Definition at line 595 of file signal.c.

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

Referenced by rb_f_kill().

#define ruby_enable_coredump   0

Definition at line 1059 of file signal.c.

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

Definition at line 498 of file signal.c.

Referenced by install_sighandler(), ruby_sig_finalize(), sighandler(), and trap().

#define SIGINFO_ARG

Definition at line 434 of file signal.c.

#define USE_TRAP_MASK   0

Definition at line 52 of file signal.c.

Typedef Documentation

typedef RETSIGTYPE ruby_sigaction_t(int)

Definition at line 433 of file signal.c.

typedef RETSIGTYPE(* sighandler_t)(int)

Definition at line 428 of file signal.c.

Function Documentation

static sighandler_t default_handler ( int  sig)
static

Definition at line 719 of file signal.c.

References func, GET_THREAD, sighandler(), and SIGINT.

Referenced by trap_handler().

static VALUE esignal_init ( int  argc,
VALUE argv,
VALUE  self 
)
static
static VALUE esignal_signo ( VALUE  self)
static

Definition at line 293 of file signal.c.

References rb_iv_get().

Referenced by Init_signal().

void Init_signal ( void  )
static void install_sighandler ( int  signum,
sighandler_t  handler 
)
static

Definition at line 1006 of file signal.c.

References ruby_signal.

Referenced by Init_signal().

static VALUE interrupt_init ( int  argc,
VALUE argv,
VALUE  self 
)
static

Definition at line 300 of file signal.c.

References args, INT2FIX, rb_call_super(), rb_scan_args(), and SIGINT.

Referenced by Init_signal().

void rb_disable_interrupt ( void  )

Definition at line 538 of file signal.c.

References NULL, and pthread_sigmask().

Referenced by after_exec(), and rb_get_next_signal().

void rb_enable_interrupt ( void  )

Definition at line 550 of file signal.c.

References NULL, and pthread_sigmask().

Referenced by before_exec(), and rb_get_next_signal().

VALUE rb_f_kill ( int  argc,
VALUE argv 
)
int rb_get_next_signal ( void  )
int rb_signal_buff_size ( void  )

Definition at line 524 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 
)
void rb_trap_exit ( void  )

Definition at line 656 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().

void rb_trap_restore_mask ( void  )

Definition at line 908 of file signal.c.

References NULL, and pthread_sigmask().

Referenced by rb_throw_obj(), and setup_exception().

rb_atomic_t ruby_atomic_compare_and_swap ( rb_atomic_t ptr,
rb_atomic_t  cmp,
rb_atomic_t  newval 
)

Definition at line 34 of file signal.c.

rb_atomic_t ruby_atomic_exchange ( rb_atomic_t ptr,
rb_atomic_t  val 
)

Definition at line 26 of file signal.c.

void ruby_default_signal ( int  sig)

Definition at line 310 of file signal.c.

References signal().

Referenced by ruby_cleanup().

void ruby_sig_finalize ( void  )

Definition at line 1046 of file signal.c.

References ruby_signal, sighandler(), and SIGINT.

Referenced by ruby_finalize_1().

const char* ruby_signal_name ( int  no)

Definition at line 221 of file signal.c.

References signo2signm().

Referenced by pst_message().

static VALUE sig_list ( void  )
static

Definition at line 994 of file signal.c.

References INT2FIX, rb_hash_aset(), rb_hash_new(), rb_str_new2(), siglist, signals::signm, and signals::signo.

Referenced by Init_signal().

static VALUE sig_trap ( int  argc,
VALUE argv 
)
static
static RETSIGTYPE sighandler ( int  sig)
static
static void signal_exec ( VALUE  cmd,
int  safe,
int  sig 
)
static

Definition at line 649 of file signal.c.

References INT2NUM(), rb_ary_new3(), and rb_eval_cmd().

Referenced by rb_signal_exec(), and rb_trap_exit().

static int signm2signo ( const char *  nm)
static

Definition at line 199 of file signal.c.

References siglist, signals::signm, and signals::signo.

Referenced by esignal_init(), rb_f_kill(), and trap_signm().

static const char* signo2signm ( int  no)
static

Definition at line 210 of file signal.c.

References siglist, signals::signm, and signals::signo.

Referenced by esignal_init(), and ruby_signal_name().

static VALUE trap ( struct trap_arg arg)
static
static sighandler_t trap_handler ( VALUE cmd,
int  sig 
)
static
static int trap_signm ( VALUE  vsig)
static

Definition at line 835 of file signal.c.

References FIX2INT, NSIG, rb_eArgError, rb_id2name(), rb_raise(), signm2signo(), StringValuePtr, SYM2ID, T_FIXNUM, T_SYMBOL, and TYPE.

Referenced by sig_trap().

Variable Documentation

int ruby_enable_coredump = 0

Definition at line 1057 of file signal.c.

Referenced by set_debug_option().

struct signals siglist[]
static

Referenced by sig_list(), signm2signo(), and signo2signm().

struct { ... } signal_buff

Definition at line 421 of file signal.c.