Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SIGNAL(9)		 BSD Kernel Developer's	Manual		     SIGNAL(9)

NAME
     signal, SIGADDSET,	SIGDELSET, SETEMPTYSET,	SIGFILLSET, SIGISMEMBER,
     SIGISEMPTY, SIGNOTEMPTY, SIGSETEQ,	SIGSETNEQ, SIGSETOR, SIGSETAND,
     SIGSETNAND, SIGSETCANTMASK, SIG_STOPSIGMASK, SIG_CONTSIGMASK, SIGPENDING,
     cursig, execsigs, issignal, killproc, pgsigio, postsig, sigexit, siginit,
     signotify,	trapsignal -- kernel signal functions

SYNOPSIS
     #include <sys/param.h>
     #include <sys/proc.h>
     #include <sys/signalvar.h>

     void
     SIGADDSET(sigset_t	set, int signo);

     void
     SIGDELSET(sigset_t	set, int signo);

     void
     SIGEMPTYSET(sigset_t set);

     void
     SIGFILLSET(sigset_t set);

     int
     SIGISMEMBER(sigset_t set, int signo);

     int
     SIGISEMPTY(sigset_t set);

     int
     SIGNOTEMPTY(sigset_t set);

     int
     SIGSETEQ(sigset_t set1, sigset_t set2);

     int
     SIGSETNEQ(sigset_t	set1, sigset_t set2);

     void
     SIGSETOR(sigset_t set1, sigset_t set2);

     void
     SIGSETAND(sigset_t	set1, sigset_t set2);

     void
     SIGSETNAND(sigset_t set1, sigset_t	set2);

     void
     SIG_CANTMASK(sigset_t set);

     void
     SIG_STOPSIGMASK(sigset_t set);

     void
     SIG_CONTSIGMASK(sigset_t set);

     int
     SIGPENDING(struct proc *p);

     int
     cursig(struct thread *td);

     void
     execsigs(struct proc *p);

     int
     issignal(struct thread *td);

     void
     killproc(struct proc *p, char *why);

     void
     pgsigio(struct sigio **sigiop, int	sig, int checkctty);

     void
     postsig(int sig);

     void
     sigexit(struct thread *td,	int signum);

     void
     siginit(struct proc *p);

     void
     signotify(struct thread *td);

     void
     trapsignal(struct thread *td, int sig, u_long code);

DESCRIPTION
     The SIGADDSET() macro adds	signo to set.  No effort is made to ensure
     that signo	is a valid signal number.

     The SIGDELSET() macro removes signo from set.  No effort is made to en-
     sure that signo is	a valid	signal number.

     The SIGEMPTYSET() macro clears all	signals	in set.

     The SIGFILLSET() macro sets all signals in	set.

     The SIGISMEMBER() macro determines	if signo is set	in set.

     The SIGISEMPTY() macro determines if set does not have any	signals	set.

     The SIGNOTEMPTY() macro determines	if set has any signals set.

     The SIGSETEQ() macro determines if	two signal sets	are equal; that	is,
     the same signals are set in both.

     The SIGSETNEQ() macro determines if two signal sets differ; that is, if
     any signal	set in one is not set in the other.

     The SIGSETOR() macro ORs the signals set in set2 into set1.

     The SIGSETAND() macro ANDs	the signals set	in set2	into set1.

     The SIGSETNAND() macro NANDs the signals set in set2 into set1.

     The SIG_CANTMASK()	macro clears the SIGKILL and SIGSTOP signals from set.
     These two signals cannot be blocked or caught and SIG_CANTMASK() is used
     in	code where signals are manipulated to ensure this policy is enforced.

     The SIG_STOPSIGMASK() macro clears	the SIGSTOP, SIGTSTP, SIGTTIN, and
     SIGTTOU signals from set.	SIG_STOPSIGMASK() is used to clear stop	sig-
     nals when a process is waiting for	a child	to exit	or exec, and when a
     process is	continuing after having	been suspended.

     The SIG_CONTSIGMASK() macro clears	the SIGCONT signal from	set.
     SIG_CONTSIGMASK() is called when a	process	is stopped.

     The SIGPENDING() macro determines if the given process has	any pending
     signals that are not masked.  If the process has a	pending	signal and the
     process is	currently being	traced,	SIGPENDING() will return true even if
     the signal	is masked.

     The cursig() function returns the signal number that should be delivered
     to	process	td-_td_proc.  If there are no signals pending, zero is re-
     turned.

     The execsigs() function resets the	signal set and signal stack of a
     process in	preparation for	an execve(2).  The process lock	for p must be
     held before execsigs() is called.

     The issignal() function determines	if there are any pending signals for
     process td-_td_proc that should be	caught,	or cause this process to ter-
     minate or interrupt its current system call.  If process td-_td_proc is
     currently being traced, ignored signals will be handled and the process
     is	always stopped.	 Stop signals are handled and cleared right away by
     issignal()	unless the process is a	member of an orphaned process group
     and the stop signal originated from a TTY.	 The process spin lock for
     td-_td_proc may be	acquired and released.	The sigacts structure
     td-_td_proc-_p_sigacts must be locked before calling issignal() and may
     be	released and reacquired	during the call.  The process lock for
     td-_td_proc must be acquired before calling issignal() and	may be re-
     leased and	reacquired during the call.  Default signal actions are	not
     taken for system processes	and init.

     The killproc() function delivers SIGKILL to p.  why is logged as the rea-
     son why the process was killed.

     The pgsigio() function sends the signal sig to the	process	or process
     group sigiop-_sio_pgid.  If checkctty is non-zero,	the signal is only de-
     livered to	processes in the process group that have a controlling termi-
     nal.  If sigiop-_sio_pgid is for a	process	(> 0), the lock	for
     sigiop-_sio_proc is acquired and released.	 If sigiop-_sio_pgid is	for a
     process group (< 0), the process group lock for sigiop-_sio_pgrp is ac-
     quired and	released.  The lock sigio_lock is acquired and released.

     The postsig() function handles the	actual delivery	of the signal sig.
     postsig() is called from ast() after the kernel has been notified that a
     signal should be delivered	(via a call to signotify(), which causes the
     flag PS_NEEDSIGCHK	to be set).  The process lock for process that owns
     curthread must be held before postsig() is	called,	and the	current
     process cannot be 0.  The lock for	the p_sigacts field of the current
     process must be held before postsig() is called, and may be released and
     reacquired.

     The sigexit() function causes the process that owns td to exit with a re-
     turn value	of signal number sig.  If required, the	process	will dump
     core.  The	process	lock for the process that owns td must be held before
     sigexit() is called.

     The siginit() function is called during system initialization to cause
     every signal with a default property of SA_IGNORE (except SIGCONT)	to be
     ignored by	p.  The	process	lock for p is acquired and released, as	is the
     lock for sigacts structure	p-_p_sigacts.  The only	process	that siginit()
     is	ever called for	is proc0.

     The signotify() function flags that there are unmasked signals pending
     that ast()	should handle.	The process lock for process td-_td_proc must
     be	held before signotify()	is called, and the thread lock is acquired and
     released.

     The trapsignal() function sends a signal that is the result of a trap to
     process td-_td_proc.  If the process is not being traced and the signal
     can be delivered immediately, trapsignal()	will deliver it	directly; oth-
     erwise, trapsignal() will call psignal(9) to cause	the signal to be de-
     livered.  The process lock	for td-_td_proc	is acquired and	released.  The
     lock for the p_sigacts field of td-_td_proc is acquired and released.

RETURN VALUES
     The SIGISMEMBER(),	SIGISEMPTY(), SIGNOTEMPTY(), SIGSETEQ(), SIGSETNEQ(),
     and SIGPENDING() macros all return	non-zero (true)	if the condition they
     are checking is found to be true; otherwise, zero (false) is returned.

     The cursig() function returns either a valid signal number	or zero.

     issignal()	returns	either a valid signal number or	zero.

SEE ALSO
     gsignal(9), pgsignal(9), psignal(9)

AUTHORS
     This manual page was written by Chad David	<davidc@FreeBSD.org>.

BSD				 June 8, 2013				   BSD

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=signal&sektion=9&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help