#ifndef _LINUX_SIGNAL_H
#define _LINUX_SIGNAL_H
#include <linux/bug.h>
#include <linux/list.h>
#include <linux/signal_types.h>
#include <linux/string.h>
struct task_struct;
extern int print_fatal_signals;
static inline void copy_siginfo(kernel_siginfo_t *to,
const kernel_siginfo_t *from)
{ … }
static inline void clear_siginfo(kernel_siginfo_t *info)
{ … }
#define SI_EXPANSION_SIZE …
static inline void copy_siginfo_to_external(siginfo_t *to,
const kernel_siginfo_t *from)
{ … }
int copy_siginfo_to_user(siginfo_t __user *to, const kernel_siginfo_t *from);
int copy_siginfo_from_user(kernel_siginfo_t *to, const siginfo_t __user *from);
enum siginfo_layout { … };
enum siginfo_layout siginfo_layout(unsigned sig, int si_code);
#ifndef __HAVE_ARCH_SIG_BITOPS
#include <linux/bitops.h>
static inline void sigaddset(sigset_t *set, int _sig)
{ … }
static inline void sigdelset(sigset_t *set, int _sig)
{ … }
static inline int sigismember(sigset_t *set, int _sig)
{ … }
#endif
static inline int sigisemptyset(sigset_t *set)
{ … }
static inline int sigequalsets(const sigset_t *set1, const sigset_t *set2)
{ … }
#define sigmask(sig) …
#ifndef __HAVE_ARCH_SIG_SETOPS
#define _SIG_SET_BINOP …
#define _sig_or …
_SIG_SET_BINOP
#define _sig_and …
_SIG_SET_BINOP
#define _sig_andn …
_SIG_SET_BINOP
#undef _SIG_SET_BINOP
#undef _sig_or
#undef _sig_and
#undef _sig_andn
#define _SIG_SET_OP …
#define _sig_not …
_SIG_SET_OP
#undef _SIG_SET_OP
#undef _sig_not
static inline void sigemptyset(sigset_t *set)
{ … }
static inline void sigfillset(sigset_t *set)
{ … }
static inline void sigaddsetmask(sigset_t *set, unsigned long mask)
{ … }
static inline void sigdelsetmask(sigset_t *set, unsigned long mask)
{ … }
static inline int sigtestsetmask(sigset_t *set, unsigned long mask)
{ … }
static inline void siginitset(sigset_t *set, unsigned long mask)
{ … }
static inline void siginitsetinv(sigset_t *set, unsigned long mask)
{ … }
#endif
static inline void init_sigpending(struct sigpending *sig)
{ … }
extern void flush_sigqueue(struct sigpending *queue);
static inline int valid_signal(unsigned long sig)
{ … }
struct timespec;
struct pt_regs;
enum pid_type;
extern int next_signal(struct sigpending *pending, sigset_t *mask);
extern int do_send_sig_info(int sig, struct kernel_siginfo *info,
struct task_struct *p, enum pid_type type);
extern int group_send_sig_info(int sig, struct kernel_siginfo *info,
struct task_struct *p, enum pid_type type);
extern int send_signal_locked(int sig, struct kernel_siginfo *info,
struct task_struct *p, enum pid_type type);
extern int sigprocmask(int, sigset_t *, sigset_t *);
extern void set_current_blocked(sigset_t *);
extern void __set_current_blocked(const sigset_t *);
extern int show_unhandled_signals;
extern bool get_signal(struct ksignal *ksig);
extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping);
extern void exit_signals(struct task_struct *tsk);
extern void kernel_sigaction(int, __sighandler_t);
#define SIG_KTHREAD …
#define SIG_KTHREAD_KERNEL …
static inline void allow_signal(int sig)
{ … }
static inline void allow_kernel_signal(int sig)
{ … }
static inline void disallow_signal(int sig)
{ … }
extern struct kmem_cache *sighand_cachep;
extern bool unhandled_signal(struct task_struct *tsk, int sig);
#ifdef SIGEMT
#define SIGEMT_MASK …
#else
#define SIGEMT_MASK …
#endif
#if SIGRTMIN > BITS_PER_LONG
#define rt_sigmask …
#else
#define rt_sigmask(sig) …
#endif
#define siginmask(sig, mask) …
#define SIG_KERNEL_ONLY_MASK …
#define SIG_KERNEL_STOP_MASK …
#define SIG_KERNEL_COREDUMP_MASK …
#define SIG_KERNEL_IGNORE_MASK …
#define SIG_SPECIFIC_SICODES_MASK …
#define sig_kernel_only(sig) …
#define sig_kernel_coredump(sig) …
#define sig_kernel_ignore(sig) …
#define sig_kernel_stop(sig) …
#define sig_specific_sicodes(sig) …
#define sig_fatal(t, signr) …
void signals_init(void);
int restore_altstack(const stack_t __user *);
int __save_altstack(stack_t __user *, unsigned long);
#define unsafe_save_altstack(uss, sp, label) …
#ifdef CONFIG_DYNAMIC_SIGFRAME
bool sigaltstack_size_valid(size_t ss_size);
#else
static inline bool sigaltstack_size_valid(size_t size) { return true; }
#endif
#ifdef CONFIG_PROC_FS
struct seq_file;
extern void render_sigset_t(struct seq_file *, const char *, sigset_t *);
#endif
#ifndef arch_untagged_si_addr
static inline void __user *arch_untagged_si_addr(void __user *addr,
unsigned long sig,
unsigned long si_code)
{ … }
#endif
#endif