FreeBSD kernel kern code
|
#include <sys/cdefs.h>
#include "opt_compat.h"
#include "opt_kdtrace.h"
#include "opt_ktrace.h"
#include "opt_core.h"
#include "opt_procdesc.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/signalvar.h>
#include <sys/vnode.h>
#include <sys/acct.h>
#include <sys/capability.h>
#include <sys/condvar.h>
#include <sys/event.h>
#include <sys/fcntl.h>
#include <sys/imgact.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
#include <sys/ktrace.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/namei.h>
#include <sys/proc.h>
#include <sys/procdesc.h>
#include <sys/posix4.h>
#include <sys/pioctl.h>
#include <sys/racct.h>
#include <sys/resourcevar.h>
#include <sys/sdt.h>
#include <sys/sbuf.h>
#include <sys/sleepqueue.h>
#include <sys/smp.h>
#include <sys/stat.h>
#include <sys/sx.h>
#include <sys/syscallsubr.h>
#include <sys/sysctl.h>
#include <sys/sysent.h>
#include <sys/syslog.h>
#include <sys/sysproto.h>
#include <sys/timers.h>
#include <sys/unistd.h>
#include <sys/wait.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
#include <vm/uma.h>
#include <sys/jail.h>
#include <machine/cpu.h>
#include <security/audit/audit.h>
Go to the source code of this file.
Data Structures | |
struct | sigaction_args |
struct | sigprocmask_args |
struct | sigpending_args |
struct | sigsuspend_args |
struct | sigaltstack_args |
struct | kill_args |
struct | sigqueue_args |
struct | nosys_args |
Macros | |
#define | ONSIG 32 /* NSIG for osig* syscalls. XXX. */ |
#define | CANSIGIO(cr1, cr2) |
#define | SA_KILL 0x01 /* terminates process by default */ |
#define | SA_CORE 0x02 /* ditto and coredumps */ |
#define | SA_STOP 0x04 /* suspend process */ |
#define | SA_TTYSTOP 0x08 /* ditto, from tty */ |
#define | SA_IGNORE 0x10 /* ignore by default */ |
#define | SA_CONT 0x20 /* continue if suspended */ |
#define | SA_CANTMASK 0x40 /* non-maskable, catchable */ |
#define | SA_PROC 0x80 /* deliverable to any thread */ |
#define | MAX_NUM_CORES 10 |
Functions | |
__FBSDID ("$BSDSUniX$") | |
SDT_PROVIDER_DECLARE (proc) | |
SDT_PROBE_DEFINE3 (proc, kernel,, signal__send,"struct thread *","struct proc *","int") | |
SDT_PROBE_DEFINE2 (proc, kernel,, signal__clear,"int","ksiginfo_t *") | |
SDT_PROBE_DEFINE3 (proc, kernel,, signal__discard,"struct thread *","struct proc *","int") | |
static int | coredump (struct thread *) |
static char * | expand_name (const char *, uid_t, pid_t, struct thread *, int) |
static int | killpg1 (struct thread *td, int sig, int pgid, int all, ksiginfo_t *ksi) |
static int | issignal (struct thread *td, int stop_allowed) |
static int | sigprop (int sig) |
static void | tdsigwakeup (struct thread *, int, sig_t, int) |
static void | sig_suspend_threads (struct thread *, struct proc *, int) |
static int | filt_sigattach (struct knote *kn) |
static void | filt_sigdetach (struct knote *kn) |
static int | filt_signal (struct knote *kn, long hint) |
static struct thread * | sigtd (struct proc *p, int sig, int prop) |
static void | sigqueue_start (void) |
SYSCTL_INT (_kern, KERN_LOGSIGEXIT, logsigexit, CTLFLAG_RW,&kern_logsigexit, 0,"Log processes quitting on abnormal signals to syslog(3)") | |
SYSCTL_INT (_kern, OID_AUTO, forcesigexit, CTLFLAG_RW,&kern_forcesigexit, 0,"Force trap signal to be handled") | |
static | SYSCTL_NODE (_kern, OID_AUTO, sigqueue, CTLFLAG_RW, 0,"POSIX real time signal") |
SYSCTL_INT (_kern_sigqueue, OID_AUTO, max_pending_per_proc, CTLFLAG_RW,&max_pending_per_proc, 0,"Max pending signals per proc") | |
TUNABLE_INT ("kern.sigqueue.preallocate",&preallocate_siginfo) | |
SYSCTL_INT (_kern_sigqueue, OID_AUTO, preallocate, CTLFLAG_RD,&preallocate_siginfo, 0,"Preallocated signal memory size") | |
SYSCTL_INT (_kern_sigqueue, OID_AUTO, overflow, CTLFLAG_RD,&signal_overflow, 0,"Number of signals overflew") | |
SYSCTL_INT (_kern_sigqueue, OID_AUTO, alloc_fail, CTLFLAG_RD,&signal_alloc_fail, 0,"signals failed to be allocated") | |
SYSINIT (signal, SI_SUB_P1003_1B, SI_ORDER_FIRST+3, sigqueue_start, NULL) | |
SYSCTL_INT (_kern, OID_AUTO, sugid_coredump, CTLFLAG_RW,&sugid_coredump, 0,"Allow setuid and setgid processes to dump core") | |
SYSCTL_INT (_kern, OID_AUTO, coredump, CTLFLAG_RW,&do_coredump, 0,"Enable/Disable coredumps") | |
SYSCTL_INT (_kern, OID_AUTO, nodump_coredump, CTLFLAG_RW,&set_core_nodump_flag, 0,"Enable setting the NODUMP flag on coredump files") | |
static void | reschedule_signals (struct proc *p, sigset_t block, int flags) |
ksiginfo_t * | ksiginfo_alloc (int wait) |
void | ksiginfo_free (ksiginfo_t *ksi) |
static __inline int | ksiginfo_tryfree (ksiginfo_t *ksi) |
void | sigqueue_init (sigqueue_t *list, struct proc *p) |
static int | sigqueue_get (sigqueue_t *sq, int signo, ksiginfo_t *si) |
void | sigqueue_take (ksiginfo_t *ksi) |
static int | sigqueue_add (sigqueue_t *sq, int signo, ksiginfo_t *si) |
void | sigqueue_flush (sigqueue_t *sq) |
static void | sigqueue_move_set (sigqueue_t *src, sigqueue_t *dst, const sigset_t *set) |
static void | sigqueue_delete_set (sigqueue_t *sq, const sigset_t *set) |
void | sigqueue_delete (sigqueue_t *sq, int signo) |
static void | sigqueue_delete_set_proc (struct proc *p, const sigset_t *set) |
void | sigqueue_delete_proc (struct proc *p, int signo) |
static void | sigqueue_delete_stopmask_proc (struct proc *p) |
int | cursig (struct thread *td, int stop_allowed) |
void | signotify (struct thread *td) |
int | sigonstack (size_t sp) |
int | sig_ffs (sigset_t *set) |
int | kern_sigaction (struct thread *td, int sig, struct sigaction *act, struct sigaction *oact, int flags) |
int | sys_sigaction (struct thread *td, struct sigaction_args *uap) |
void | siginit (struct proc *p) |
void | execsigs (struct proc *p) |
int | kern_sigprocmask (struct thread *td, int how, sigset_t *set, sigset_t *oset, int flags) |
int | sys_sigprocmask (struct thread *td, struct sigprocmask_args *uap) |
int | sys_sigwait (struct thread *td, struct sigwait_args *uap) |
int | sys_sigtimedwait (struct thread *td, struct sigtimedwait_args *uap) |
int | sys_sigwaitinfo (struct thread *td, struct sigwaitinfo_args *uap) |
int | kern_sigtimedwait (struct thread *td, sigset_t waitset, ksiginfo_t *ksi, struct timespec *timeout) |
int | sys_sigpending (struct thread *td, struct sigpending_args *uap) |
int | sys_sigsuspend (struct thread *td, struct sigsuspend_args *uap) |
int | kern_sigsuspend (struct thread *td, sigset_t mask) |
int | sys_sigaltstack (struct thread *td, struct sigaltstack_args *uap) |
int | kern_sigaltstack (struct thread *td, stack_t *ss, stack_t *oss) |
int | sys_kill (struct thread *td, struct kill_args *uap) |
int | sys_pdkill (struct thread *td, struct pdkill_args *uap) |
int | sys_sigqueue (struct thread *td, struct sigqueue_args *uap) |
void | gsignal (int pgid, int sig, ksiginfo_t *ksi) |
void | pgsignal (struct pgrp *pgrp, int sig, int checkctty, ksiginfo_t *ksi) |
static void | postsig_done (int sig, struct thread *td, struct sigacts *ps) |
void | trapsignal (struct thread *td, ksiginfo_t *ksi) |
void | kern_psignal (struct proc *p, int sig) |
int | pksignal (struct proc *p, int sig, ksiginfo_t *ksi) |
int | sigev_findtd (struct proc *p, struct sigevent *sigev, struct thread **ttd) |
void | tdsignal (struct thread *td, int sig) |
void | tdksignal (struct thread *td, int sig, ksiginfo_t *ksi) |
int | tdsendsignal (struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) |
int | ptracestop (struct thread *td, int sig) |
void | tdsigcleanup (struct thread *td) |
int | sigdeferstop (void) |
void | sigallowstop () |
void | thread_stopped (struct proc *p) |
int | postsig (int sig) |
void | killproc (struct proc *p, char *why) |
void | sigexit (struct thread *td, int sig) |
static void | sigparent (struct proc *p, int reason, int status) |
static void | childproc_jobstate (struct proc *p, int reason, int sig) |
void | childproc_stopped (struct proc *p, int reason) |
void | childproc_continued (struct proc *p) |
void | childproc_exited (struct proc *p) |
static int | sysctl_debug_num_cores_check (SYSCTL_HANDLER_ARGS) |
SYSCTL_PROC (_debug, OID_AUTO, ncores, CTLTYPE_INT|CTLFLAG_RW, 0, sizeof(int), sysctl_debug_num_cores_check,"I","") | |
SYSCTL_STRING (_kern, OID_AUTO, corefile, CTLFLAG_RW, corefilename, sizeof(corefilename),"process corefile name format string") | |
int | nosys (struct thread *td, struct nosys_args *args) |
void | pgsigio (struct sigio **sigiop, int sig, int checkctty) |
struct sigacts * | sigacts_alloc (void) |
void | sigacts_free (struct sigacts *ps) |
struct sigacts * | sigacts_hold (struct sigacts *ps) |
void | sigacts_copy (struct sigacts *dest, struct sigacts *src) |
int | sigacts_shared (struct sigacts *ps) |
Variables | |
static uma_zone_t | ksiginfo_zone = NULL |
struct filterops | sig_filtops |
static int | kern_logsigexit = 1 |
static int | kern_forcesigexit = 1 |
static int | max_pending_per_proc = 128 |
static int | preallocate_siginfo = 1024 |
static int | signal_overflow = 0 |
static int | signal_alloc_fail = 0 |
static int | sugid_coredump |
static int | do_coredump = 1 |
static int | set_core_nodump_flag = 0 |
static int | sigproptbl [NSIG] |
static int | num_cores = 5 |
static char | corefilename [MAXPATHLEN] = {"%N.core"} |
#define CANSIGIO | ( | cr1, | |
cr2 | |||
) |
Definition at line 161 of file kern_sig.c.
Referenced by pgsigio().
#define MAX_NUM_CORES 10 |
Definition at line 3014 of file kern_sig.c.
Referenced by sysctl_debug_num_cores_check().
#define ONSIG 32 /* NSIG for osig* syscalls. XXX. */ |
Definition at line 93 of file kern_sig.c.
#define SA_CANTMASK 0x40 /* non-maskable, catchable */ |
Definition at line 191 of file kern_sig.c.
#define SA_CONT 0x20 /* continue if suspended */ |
Definition at line 190 of file kern_sig.c.
Referenced by issignal(), tdsendsignal(), and tdsigwakeup().
#define SA_CORE 0x02 /* ditto and coredumps */ |
Definition at line 186 of file kern_sig.c.
Referenced by sigexit().
#define SA_IGNORE 0x10 /* ignore by default */ |
Definition at line 189 of file kern_sig.c.
Referenced by execsigs(), issignal(), kern_sigaction(), postsig_done(), and siginit().
#define SA_KILL 0x01 /* terminates process by default */ |
Definition at line 185 of file kern_sig.c.
Referenced by tdsigwakeup().
#define SA_PROC 0x80 /* deliverable to any thread */ |
Definition at line 192 of file kern_sig.c.
#define SA_STOP 0x04 /* suspend process */ |
Definition at line 187 of file kern_sig.c.
Referenced by issignal(), tdsendsignal(), and tdsigwakeup().
#define SA_TTYSTOP 0x08 /* ditto, from tty */ |
Definition at line 188 of file kern_sig.c.
Referenced by issignal(), and tdsendsignal().
__FBSDID | ( | "$BSDSUniX$" | ) |
void childproc_continued | ( | struct proc * | p | ) |
Definition at line 2985 of file kern_sig.c.
References childproc_jobstate().
Referenced by tdsendsignal().
void childproc_exited | ( | struct proc * | p | ) |
Definition at line 2991 of file kern_sig.c.
References sigparent().
Referenced by exit1().
|
static |
Definition at line 2952 of file kern_sig.c.
References sigparent(), and wakeup().
Referenced by childproc_continued(), and childproc_stopped().
void childproc_stopped | ( | struct proc * | p, |
int | reason | ||
) |
Definition at line 2978 of file kern_sig.c.
References childproc_jobstate().
Referenced by thread_stopped().
|
static |
Definition at line 3207 of file kern_sig.c.
References do_coredump, expand_name(), free(), lim_cur(), name, NDFREE(), racct_get_available(), set_core_nodump_flag, sugid_coredump, vn_close(), vn_finished_write(), vn_open_cred(), and vn_start_write().
Referenced by sigexit().
int cursig | ( | struct thread * | td, |
int | stop_allowed | ||
) |
Definition at line 559 of file kern_sig.c.
References issignal().
Referenced by ast(), kern_sigsuspend(), kern_sigtimedwait(), and sleepq_catch_signals().
void execsigs | ( | struct proc * | p | ) |
Definition at line 916 of file kern_sig.c.
References SA_IGNORE, sig_ffs(), sigprop(), and sigqueue_delete_proc().
Referenced by do_execve().
|
static |
Definition at line 3066 of file kern_sig.c.
References corefilename, free(), getcredhostname(), log(), malloc(), NDFREE(), num_cores, sbuf_delete(), sbuf_error(), sbuf_finish(), sbuf_len(), sbuf_new(), sbuf_printf(), sbuf_putc(), vn_close(), and vn_open().
Referenced by coredump().
|
static |
Definition at line 3412 of file kern_sig.c.
References knlist_add().
|
static |
Definition at line 3425 of file kern_sig.c.
References knlist_remove().
|
static |
Definition at line 3439 of file kern_sig.c.
void gsignal | ( | int | pgid, |
int | sig, | ||
ksiginfo_t * | ksi | ||
) |
Definition at line 1814 of file kern_sig.c.
References pgfind(), pgsignal(), and proctree_lock.
|
static |
Definition at line 2583 of file kern_sig.c.
References printf(), ptracestop(), SA_CONT, SA_IGNORE, SA_STOP, SA_TTYSTOP, sig_ffs(), sig_suspend_threads(), signotify(), sigprop(), sigqueue_add(), sigqueue_delete(), sigqueue_get(), stopevent(), and thread_suspend_switch().
Referenced by cursig().
void kern_psignal | ( | struct proc * | p, |
int | sig | ||
) |
Definition at line 1975 of file kern_sig.c.
References tdsendsignal().
Referenced by aio_process(), ast(), devctl_queue_data_f(), do_fork(), exit1(), kern_ptrace(), killproc(), lim_cb(), orphanpg(), pgsigio(), prison_remove_one(), realitexpire(), shutdown_nice(), sys_pdkill(), tty_signal_sessleader(), and vn_rlimit_fsize().
int kern_sigaction | ( | struct thread * | td, |
int | sig, | ||
struct sigaction * | act, | ||
struct sigaction * | oact, | ||
int | flags | ||
) |
Definition at line 633 of file kern_sig.c.
References SA_IGNORE, sigprop(), and sigqueue_delete_proc().
Referenced by sys_sigaction().
int kern_sigaltstack | ( | struct thread * | td, |
stack_t * | ss, | ||
stack_t * | oss | ||
) |
Definition at line 1558 of file kern_sig.c.
References sigonstack().
Referenced by sys_sigaltstack().
int kern_sigprocmask | ( | struct thread * | td, |
int | how, | ||
sigset_t * | set, | ||
sigset_t * | oset, | ||
int | flags | ||
) |
Definition at line 964 of file kern_sig.c.
References reschedule_signals(), set, and signotify().
Referenced by ast(), kern_pselect(), kern_sigsuspend(), postsig_done(), sys_setcontext(), sys_sigprocmask(), and sys_swapcontext().
int kern_sigsuspend | ( | struct thread * | td, |
sigset_t | mask | ||
) |
Definition at line 1429 of file kern_sig.c.
References cursig(), kern_sigprocmask(), postsig(), and thread_suspend_check().
Referenced by sys_sigsuspend().
int kern_sigtimedwait | ( | struct thread * | td, |
sigset_t | waitset, | ||
ksiginfo_t * | ksi, | ||
struct timespec * | timeout | ||
) |
Definition at line 1164 of file kern_sig.c.
References cursig(), getnanouptime(), itimer_accept(), reschedule_signals(), sigexit(), sigqueue_get(), and tvtohz().
Referenced by sys_sigtimedwait(), sys_sigwait(), and sys_sigwaitinfo().
|
static |
Definition at line 1594 of file kern_sig.c.
References allproc_lock, p_cansignal(), pgfind(), pksignal(), and proctree_lock.
Referenced by sys_kill().
void killproc | ( | struct proc * | p, |
char * | why | ||
) |
Definition at line 2865 of file kern_sig.c.
References kern_psignal(), and log().
Referenced by lim_cb().
ksiginfo_t* ksiginfo_alloc | ( | int | wait | ) |
Definition at line 242 of file kern_sig.c.
References ksiginfo_zone.
Referenced by proc_linkup(), and sigqueue_add().
void ksiginfo_free | ( | ksiginfo_t * | ksi | ) |
Definition at line 255 of file kern_sig.c.
References ksiginfo_zone.
Referenced by proc_fini().
|
static |
Definition at line 261 of file kern_sig.c.
References ksiginfo_zone.
Referenced by sigqueue_delete_set(), sigqueue_flush(), sigqueue_get(), and tdsendsignal().
int nosys | ( | struct thread * | td, |
struct nosys_args * | args | ||
) |
Definition at line 3355 of file kern_sig.c.
References tdsignal().
Referenced by lkmnosys(), and lkmressys().
void pgsigio | ( | struct sigio ** | sigiop, |
int | sig, | ||
int | checkctty | ||
) |
Definition at line 3372 of file kern_sig.c.
References CANSIGIO, and kern_psignal().
Referenced by kqueue_wakeup(), logtimeout(), pipeselwakeup(), sohasoutofband(), sowakeup(), and tty_wakeup().
void pgsignal | ( | struct pgrp * | pgrp, |
int | sig, | ||
int | checkctty, | ||
ksiginfo_t * | ksi | ||
) |
Definition at line 1834 of file kern_sig.c.
References pksignal().
Referenced by gsignal(), tty_signal_pgrp(), and tty_wait_background().
int pksignal | ( | struct proc * | p, |
int | sig, | ||
ksiginfo_t * | ksi | ||
) |
Definition at line 1986 of file kern_sig.c.
References tdsendsignal().
Referenced by killpg1(), pgsignal(), proc_reap(), sigparent(), sys_kill(), and sys_sigqueue().
int postsig | ( | int | sig | ) |
Definition at line 2788 of file kern_sig.c.
References itimer_accept(), postsig_done(), sigexit(), sigqueue_get(), and stopevent().
Referenced by ast(), and kern_sigsuspend().
|
static |
Definition at line 1858 of file kern_sig.c.
References kern_sigprocmask(), mask, SA_IGNORE, and sigprop().
Referenced by postsig(), and trapsignal().
int ptracestop | ( | struct thread * | td, |
int | sig | ||
) |
Definition at line 2434 of file kern_sig.c.
References sig_suspend_threads(), and thread_suspend_switch().
Referenced by fork_return(), issignal(), syscallenter(), and syscallret().
|
static |
Definition at line 2482 of file kern_sig.c.
References sig_ffs(), signotify(), sigtd(), and tdsigwakeup().
Referenced by kern_sigprocmask(), kern_sigtimedwait(), and tdsigcleanup().
SDT_PROBE_DEFINE2 | ( | proc | , |
kernel | , | ||
signal__clear | , | ||
"int" | , | ||
"ksiginfo_t *" | |||
) |
SDT_PROBE_DEFINE3 | ( | proc | , |
kernel | , | ||
signal__send | , | ||
"struct thread *" | , | ||
"struct proc *" | , | ||
"int" | |||
) |
SDT_PROBE_DEFINE3 | ( | proc | , |
kernel | , | ||
signal__discard | , | ||
"struct thread *" | , | ||
"struct proc *" | , | ||
"int" | |||
) |
SDT_PROVIDER_DECLARE | ( | proc | ) |
int sig_ffs | ( | sigset_t * | set | ) |
Definition at line 616 of file kern_sig.c.
Referenced by execsigs(), issignal(), and reschedule_signals().
|
static |
Definition at line 2394 of file kern_sig.c.
References thread_suspend_one().
Referenced by issignal(), ptracestop(), and tdsendsignal().
struct sigacts* sigacts_alloc | ( | void | ) |
Definition at line 3452 of file kern_sig.c.
References malloc(), and mtx_init().
Referenced by do_execve(), do_fork(), and proc0_init().
void sigacts_copy | ( | struct sigacts * | dest, |
struct sigacts * | src | ||
) |
Definition at line 3485 of file kern_sig.c.
Referenced by do_execve(), and do_fork().
void sigacts_free | ( | struct sigacts * | ps | ) |
Definition at line 3463 of file kern_sig.c.
References free(), and mtx_destroy().
Referenced by do_execve(), and proc_reap().
struct sigacts* sigacts_hold | ( | struct sigacts * | ps | ) |
Definition at line 3476 of file kern_sig.c.
Referenced by do_fork().
int sigacts_shared | ( | struct sigacts * | ps | ) |
Definition at line 3495 of file kern_sig.c.
Referenced by do_execve().
void sigallowstop | ( | ) |
Definition at line 2560 of file kern_sig.c.
int sigdeferstop | ( | void | ) |
Definition at line 2541 of file kern_sig.c.
int sigev_findtd | ( | struct proc * | p, |
struct sigevent * | sigev, | ||
struct thread ** | ttd | ||
) |
Definition at line 1994 of file kern_sig.c.
References tdfind().
Referenced by aio_sendsig(), itimer_fire(), and mqueue_send_notification().
void sigexit | ( | struct thread * | td, |
int | sig | ||
) |
Definition at line 2888 of file kern_sig.c.
References coredump(), exit1(), kern_logsigexit, log(), SA_CORE, sigprop(), and thread_single().
Referenced by kern_sigtimedwait(), and postsig().
void siginit | ( | struct proc * | p | ) |
Definition at line 896 of file kern_sig.c.
References SA_IGNORE, and sigprop().
Referenced by proc0_init().
void signotify | ( | struct thread * | td | ) |
Definition at line 575 of file kern_sig.c.
Referenced by issignal(), kern_sigprocmask(), reschedule_signals(), and tdsendsignal().
int sigonstack | ( | size_t | sp | ) |
Definition at line 591 of file kern_sig.c.
Referenced by kern_sigaltstack().
|
static |
Definition at line 2934 of file kern_sig.c.
References pksignal().
Referenced by childproc_exited(), and childproc_jobstate().
|
static |
Definition at line 607 of file kern_sig.c.
References sigproptbl.
Referenced by execsigs(), issignal(), kern_sigaction(), postsig_done(), sigexit(), siginit(), tdsendsignal(), and tdsigwakeup().
|
static |
Definition at line 349 of file kern_sig.c.
References ksiginfo_alloc(), ksiginfo_zone, max_pending_per_proc, signal_alloc_fail, and signal_overflow.
Referenced by issignal(), and tdsendsignal().
void sigqueue_delete | ( | sigqueue_t * | sq, |
int | signo | ||
) |
Definition at line 503 of file kern_sig.c.
References set, and sigqueue_delete_set().
Referenced by issignal(), tdsendsignal(), and tdsigwakeup().
void sigqueue_delete_proc | ( | struct proc * | p, |
int | signo | ||
) |
Definition at line 531 of file kern_sig.c.
References set, and sigqueue_delete_set_proc().
Referenced by execsigs(), kern_sigaction(), and tdsendsignal().
|
static |
Definition at line 482 of file kern_sig.c.
References ksiginfo_tryfree().
Referenced by sigqueue_delete().
|
static |
Definition at line 514 of file kern_sig.c.
References sigqueue_flush(), sigqueue_init(), and sigqueue_move_set().
Referenced by sigqueue_delete_proc(), and sigqueue_delete_stopmask_proc().
|
static |
Definition at line 541 of file kern_sig.c.
References set, and sigqueue_delete_set_proc().
Referenced by tdsendsignal().
void sigqueue_flush | ( | sigqueue_t * | sq | ) |
Definition at line 412 of file kern_sig.c.
References ksiginfo_tryfree().
Referenced by exit1(), sigqueue_delete_set_proc(), and tdsigcleanup().
|
static |
Definition at line 287 of file kern_sig.c.
References count, and ksiginfo_tryfree().
Referenced by issignal(), kern_sigtimedwait(), and postsig().
void sigqueue_init | ( | sigqueue_t * | list, |
struct proc * | p | ||
) |
Definition at line 271 of file kern_sig.c.
Referenced by proc_linkup(), sigqueue_delete_set_proc(), and thread_link().
|
static |
Definition at line 434 of file kern_sig.c.
Referenced by sigqueue_delete_set_proc().
|
static |
Definition at line 231 of file kern_sig.c.
References ksiginfo_zone, max_pending_per_proc, p31b_setcfg(), and preallocate_siginfo.
void sigqueue_take | ( | ksiginfo_t * | ksi | ) |
Definition at line 324 of file kern_sig.c.
Referenced by aio_free_entry(), aio_proc_rundown(), kern_kmq_notify(), kern_ktimer_delete(), kern_lio_listio(), kern_ptrace(), kern_wait6(), notifier_remove(), proc_reap(), proc_reparent(), and tdsendsignal().
|
static |
Definition at line 1933 of file kern_sig.c.
Referenced by reschedule_signals(), and tdsendsignal().
int sys_kill | ( | struct thread * | td, |
struct kill_args * | uap | ||
) |
Definition at line 1671 of file kern_sig.c.
References killpg1(), p_cansignal(), pfind(), kill_args::pid, pksignal(), kill_args::signum, and zpfind().
int sys_pdkill | ( | struct thread * | td, |
struct pdkill_args * | uap | ||
) |
Definition at line 1713 of file kern_sig.c.
References kern_psignal(), and p_cansignal().
int sys_sigaction | ( | struct thread * | td, |
struct sigaction_args * | uap | ||
) |
Definition at line 783 of file kern_sig.c.
References kern_sigaction().
int sys_sigaltstack | ( | struct thread * | td, |
struct sigaltstack_args * | uap | ||
) |
Definition at line 1536 of file kern_sig.c.
References kern_sigaltstack().
int sys_sigpending | ( | struct thread * | td, |
struct sigpending_args * | uap | ||
) |
Definition at line 1283 of file kern_sig.c.
References sigpending_args::set.
int sys_sigprocmask | ( | struct thread * | td, |
struct sigprocmask_args * | uap | ||
) |
Definition at line 1034 of file kern_sig.c.
References sigprocmask_args::how, kern_sigprocmask(), sigprocmask_args::oset, set, and sigprocmask_args::set.
int sys_sigqueue | ( | struct thread * | td, |
struct sigqueue_args * | uap | ||
) |
Definition at line 1775 of file kern_sig.c.
References p_cansignal(), pfind(), sigqueue_args::pid, pksignal(), sigqueue_args::signum, sigqueue_args::value, and zpfind().
int sys_sigsuspend | ( | struct thread * | td, |
struct sigsuspend_args * | uap | ||
) |
Definition at line 1415 of file kern_sig.c.
References kern_sigsuspend(), mask, and sigsuspend_args::sigmask.
int sys_sigtimedwait | ( | struct thread * | td, |
struct sigtimedwait_args * | uap | ||
) |
Definition at line 1107 of file kern_sig.c.
References kern_sigtimedwait(), set, timeout(), and ts.
int sys_sigwait | ( | struct thread * | td, |
struct sigwait_args * | uap | ||
) |
Definition at line 1079 of file kern_sig.c.
References kern_sigtimedwait(), and set.
int sys_sigwaitinfo | ( | struct thread * | td, |
struct sigwaitinfo_args * | uap | ||
) |
Definition at line 1141 of file kern_sig.c.
References kern_sigtimedwait(), and set.
|
static |
Definition at line 3018 of file kern_sig.c.
References MAX_NUM_CORES, num_cores, and sysctl_handle_int().
SYSCTL_INT | ( | _kern | , |
KERN_LOGSIGEXIT | , | ||
logsigexit | , | ||
CTLFLAG_RW | , | ||
& | kern_logsigexit, | ||
0 | , | ||
"Log processes quitting on abnormal signals to syslog(3)" | |||
) |
SYSCTL_INT | ( | _kern | , |
OID_AUTO | , | ||
forcesigexit | , | ||
CTLFLAG_RW | , | ||
& | kern_forcesigexit, | ||
0 | , | ||
"Force trap signal to be handled" | |||
) |
SYSCTL_INT | ( | _kern_sigqueue | , |
OID_AUTO | , | ||
max_pending_per_proc | , | ||
CTLFLAG_RW | , | ||
& | max_pending_per_proc, | ||
0 | , | ||
"Max pending signals per proc" | |||
) |
SYSCTL_INT | ( | _kern_sigqueue | , |
OID_AUTO | , | ||
preallocate | , | ||
CTLFLAG_RD | , | ||
& | preallocate_siginfo, | ||
0 | , | ||
"Preallocated signal memory size" | |||
) |
SYSCTL_INT | ( | _kern_sigqueue | , |
OID_AUTO | , | ||
overflow | , | ||
CTLFLAG_RD | , | ||
& | signal_overflow, | ||
0 | , | ||
"Number of signals overflew" | |||
) |
SYSCTL_INT | ( | _kern_sigqueue | , |
OID_AUTO | , | ||
alloc_fail | , | ||
CTLFLAG_RD | , | ||
& | signal_alloc_fail, | ||
0 | , | ||
"signals failed to be allocated" | |||
) |
SYSCTL_INT | ( | _kern | , |
OID_AUTO | , | ||
sugid_coredump | , | ||
CTLFLAG_RW | , | ||
& | sugid_coredump, | ||
0 | , | ||
"Allow setuid and setgid processes to dump core" | |||
) |
SYSCTL_INT | ( | _kern | , |
OID_AUTO | , | ||
coredump | , | ||
CTLFLAG_RW | , | ||
& | do_coredump, | ||
0 | , | ||
"Enable/Disable coredumps" | |||
) |
SYSCTL_INT | ( | _kern | , |
OID_AUTO | , | ||
nodump_coredump | , | ||
CTLFLAG_RW | , | ||
& | set_core_nodump_flag, | ||
0 | , | ||
"Enable setting the NODUMP flag on coredump files" | |||
) |
|
static |
SYSCTL_PROC | ( | _debug | , |
OID_AUTO | , | ||
ncores | , | ||
CTLTYPE_INT| | CTLFLAG_RW, | ||
0 | , | ||
sizeof(int) | , | ||
sysctl_debug_num_cores_check | , | ||
"I" | , | ||
"" | |||
) |
SYSCTL_STRING | ( | _kern | , |
OID_AUTO | , | ||
corefile | , | ||
CTLFLAG_RW | , | ||
corefilename | , | ||
sizeof(corefilename) | , | ||
"process corefile name format string" | |||
) |
SYSINIT | ( | signal | , |
SI_SUB_P1003_1B | , | ||
SI_ORDER_FIRST+ | 3, | ||
sigqueue_start | , | ||
NULL | |||
) |
void tdksignal | ( | struct thread * | td, |
int | sig, | ||
ksiginfo_t * | ksi | ||
) |
Definition at line 2022 of file kern_sig.c.
References tdsendsignal().
Referenced by sys_thr_kill(), and sys_thr_kill2().
int tdsendsignal | ( | struct proc * | p, |
struct thread * | td, | ||
int | sig, | ||
ksiginfo_t * | ksi | ||
) |
Definition at line 2029 of file kern_sig.c.
References childproc_continued(), ksiginfo_tryfree(), panic(), SA_CONT, SA_STOP, SA_TTYSTOP, sig_suspend_threads(), signotify(), sigprop(), sigqueue_add(), sigqueue_delete(), sigqueue_delete_proc(), sigqueue_delete_stopmask_proc(), sigqueue_take(), sigtd(), sleepq_abort(), tdsigwakeup(), thread_stopped(), thread_unsuspend(), and wakeup().
Referenced by aio_sendsig(), itimer_fire(), kern_psignal(), mqueue_send_notification(), pksignal(), tdksignal(), tdsignal(), and trapsignal().
void tdsigcleanup | ( | struct thread * | td | ) |
Definition at line 2509 of file kern_sig.c.
References reschedule_signals(), and sigqueue_flush().
Referenced by sys_thr_exit(), and thread_suspend_check().
void tdsignal | ( | struct thread * | td, |
int | sig | ||
) |
Definition at line 2011 of file kern_sig.c.
References tdsendsignal().
Referenced by dofilewrite(), kern_sendit(), nosys(), soo_write(), sys_sctp_generic_sendmsg(), and sys_sctp_generic_sendmsg_iov().
|
static |
Definition at line 2317 of file kern_sig.c.
References SA_CONT, SA_KILL, SA_STOP, sched_prio(), sigprop(), sigqueue_delete(), and sleepq_abort().
Referenced by reschedule_signals(), and tdsendsignal().
void thread_stopped | ( | struct proc * | p | ) |
Definition at line 2763 of file kern_sig.c.
References childproc_stopped().
Referenced by sys_thr_exit(), tdsendsignal(), thread_suspend_check(), and thread_suspend_switch().
void trapsignal | ( | struct thread * | td, |
ksiginfo_t * | ksi | ||
) |
Definition at line 1884 of file kern_sig.c.
References kern_forcesigexit, postsig_done(), and tdsendsignal().
TUNABLE_INT | ( | "kern.sigqueue.preallocate" | , |
& | preallocate_siginfo | ||
) |
|
static |
Definition at line 3050 of file kern_sig.c.
Referenced by expand_name().
|
static |
Definition at line 172 of file kern_sig.c.
Referenced by coredump().
|
static |
Definition at line 130 of file kern_sig.c.
Referenced by trapsignal().
|
static |
Definition at line 125 of file kern_sig.c.
Referenced by sigexit().
|
static |
Definition at line 117 of file kern_sig.c.
Referenced by ksiginfo_alloc(), ksiginfo_free(), ksiginfo_tryfree(), sigqueue_add(), and sigqueue_start().
|
static |
Definition at line 137 of file kern_sig.c.
Referenced by sigqueue_add(), and sigqueue_start().
|
static |
Definition at line 3015 of file kern_sig.c.
Referenced by expand_name(), and sysctl_debug_num_cores_check().
|
static |
Definition at line 141 of file kern_sig.c.
Referenced by sigqueue_start().
|
static |
Definition at line 176 of file kern_sig.c.
Referenced by coredump().
struct filterops sig_filtops |
Definition at line 118 of file kern_sig.c.
|
static |
Definition at line 150 of file kern_sig.c.
Referenced by sigqueue_add().
|
static |
Definition at line 146 of file kern_sig.c.
Referenced by sigqueue_add().
|
static |
Definition at line 194 of file kern_sig.c.
Referenced by sigprop().
|
static |
Definition at line 168 of file kern_sig.c.
Referenced by coredump().