Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/signalvar.h
Show First 20 Lines • Show All 267 Lines • ▼ Show 20 Lines | |||||
#define SIGFASTBLOCK_INC 0x10 | #define SIGFASTBLOCK_INC 0x10 | ||||
#ifndef _KERNEL | #ifndef _KERNEL | ||||
int __sys_sigfastblock(int cmd, void *ptr); | int __sys_sigfastblock(int cmd, void *ptr); | ||||
#endif | #endif | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
extern sigset_t fastblock_mask; | extern sigset_t fastblock_mask; | ||||
extern bool sigfastblock_fetch_always; | |||||
/* Return nonzero if process p has an unmasked pending signal. */ | /* Return nonzero if process p has an unmasked pending signal. */ | ||||
#define SIGPENDING(td) \ | #define SIGPENDING(td) \ | ||||
((!SIGISEMPTY((td)->td_siglist) && \ | ((!SIGISEMPTY((td)->td_siglist) && \ | ||||
!sigsetmasked(&(td)->td_siglist, &(td)->td_sigmask)) || \ | !sigsetmasked(&(td)->td_siglist, &(td)->td_sigmask)) || \ | ||||
(!SIGISEMPTY((td)->td_proc->p_siglist) && \ | (!SIGISEMPTY((td)->td_proc->p_siglist) && \ | ||||
!sigsetmasked(&(td)->td_proc->p_siglist, &(td)->td_sigmask))) | !sigsetmasked(&(td)->td_proc->p_siglist, &(td)->td_sigmask))) | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | sigallowstop(int prev) | ||||
if (__predict_true(prev == SIGDEFERSTOP_VAL_NCHG)) | if (__predict_true(prev == SIGDEFERSTOP_VAL_NCHG)) | ||||
return; | return; | ||||
sigallowstop_impl(prev); | sigallowstop_impl(prev); | ||||
} | } | ||||
int cursig(struct thread *td); | int cursig(struct thread *td); | ||||
void execsigs(struct proc *p); | void execsigs(struct proc *p); | ||||
void fetch_sigfastblock(struct thread *td); | |||||
void fetch_sigfastblock_failed(struct thread *td, bool write); | |||||
void gsignal(int pgid, int sig, ksiginfo_t *ksi); | void gsignal(int pgid, int sig, ksiginfo_t *ksi); | ||||
void killproc(struct proc *p, char *why); | void killproc(struct proc *p, char *why); | ||||
ksiginfo_t * ksiginfo_alloc(int wait); | ksiginfo_t * ksiginfo_alloc(int wait); | ||||
void ksiginfo_free(ksiginfo_t *ksi); | void ksiginfo_free(ksiginfo_t *ksi); | ||||
int pksignal(struct proc *p, int sig, ksiginfo_t *ksi); | int pksignal(struct proc *p, int sig, ksiginfo_t *ksi); | ||||
void pgsigio(struct sigio **sigiop, int sig, int checkctty); | void pgsigio(struct sigio **sigiop, int sig, int checkctty); | ||||
void pgsignal(struct pgrp *pgrp, int sig, int checkctty, ksiginfo_t *ksi); | void pgsignal(struct pgrp *pgrp, int sig, int checkctty, ksiginfo_t *ksi); | ||||
int postsig(int sig); | int postsig(int sig); | ||||
void kern_psignal(struct proc *p, int sig); | void kern_psignal(struct proc *p, int sig); | ||||
int ptracestop(struct thread *td, int sig, ksiginfo_t *si); | int ptracestop(struct thread *td, int sig, ksiginfo_t *si); | ||||
void reschedule_signals(struct proc *p, sigset_t block, int flags); | void reschedule_signals(struct proc *p, sigset_t block, int flags); | ||||
void sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *retmask); | void sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *retmask); | ||||
struct sigacts *sigacts_alloc(void); | struct sigacts *sigacts_alloc(void); | ||||
void sigacts_copy(struct sigacts *dest, struct sigacts *src); | void sigacts_copy(struct sigacts *dest, struct sigacts *src); | ||||
void sigacts_free(struct sigacts *ps); | void sigacts_free(struct sigacts *ps); | ||||
struct sigacts *sigacts_hold(struct sigacts *ps); | struct sigacts *sigacts_hold(struct sigacts *ps); | ||||
int sigacts_shared(struct sigacts *ps); | int sigacts_shared(struct sigacts *ps); | ||||
void sig_drop_caught(struct proc *p); | void sig_drop_caught(struct proc *p); | ||||
void sigexit(struct thread *td, int sig) __dead2; | void sigexit(struct thread *td, int sig) __dead2; | ||||
int sigev_findtd(struct proc *p, struct sigevent *sigev, struct thread **); | int sigev_findtd(struct proc *p, struct sigevent *sigev, struct thread **); | ||||
int sig_ffs(sigset_t *set); | int sig_ffs(sigset_t *set); | ||||
void sigfastblock_clear(struct thread *td); | |||||
void sigfastblock_fetch(struct thread *td); | |||||
void sigfastblock_setpend(struct thread *td); | |||||
void siginit(struct proc *p); | void siginit(struct proc *p); | ||||
void signotify(struct thread *td); | void signotify(struct thread *td); | ||||
void sigqueue_delete(struct sigqueue *queue, int sig); | void sigqueue_delete(struct sigqueue *queue, int sig); | ||||
void sigqueue_delete_proc(struct proc *p, int sig); | void sigqueue_delete_proc(struct proc *p, int sig); | ||||
void sigqueue_flush(struct sigqueue *queue); | void sigqueue_flush(struct sigqueue *queue); | ||||
void sigqueue_init(struct sigqueue *queue, struct proc *p); | void sigqueue_init(struct sigqueue *queue, struct proc *p); | ||||
void sigqueue_take(ksiginfo_t *ksi); | void sigqueue_take(ksiginfo_t *ksi); | ||||
void tdksignal(struct thread *td, int sig, ksiginfo_t *ksi); | void tdksignal(struct thread *td, int sig, ksiginfo_t *ksi); | ||||
Show All 9 Lines |