11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _ASMARM_SIGNAL_H 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _ASMARM_SIGNAL_H 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Avoid too many header ordering problems. */ 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct siginfo; 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__ 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Most things should be clean enough to redefine this at will, if care 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds is taken to make libc match. */ 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSIG 64 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSIG_BPW 32 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSIG_WORDS (_NSIG / _NSIG_BPW) 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef unsigned long old_sigset_t; /* at least 32 bits */ 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sig[_NSIG_WORDS]; 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} sigset_t; 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Here we must cater to libcs that poke about in kernel headers. */ 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NSIG 32 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef unsigned long sigset_t; 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL__ */ 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGHUP 1 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGINT 2 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGQUIT 3 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGILL 4 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTRAP 5 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGABRT 6 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGIOT 6 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGBUS 7 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGFPE 8 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGKILL 9 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGUSR1 10 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSEGV 11 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGUSR2 12 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPIPE 13 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGALRM 14 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTERM 15 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSTKFLT 16 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGCHLD 17 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGCONT 18 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSTOP 19 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTSTP 20 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTTIN 21 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTTOU 22 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGURG 23 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGXCPU 24 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGXFSZ 25 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGVTALRM 26 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPROF 27 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGWINCH 28 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGIO 29 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPOLL SIGIO 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGLOST 29 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPWR 30 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSYS 31 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGUNUSED 31 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* These should not be considered constants from userland. */ 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGRTMIN 32 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGRTMAX _NSIG 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSWI 32 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_FLAGS values: 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_SIGINFO deliver the signal with SIGINFO structs 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_THIRTYTWO delivers the signal in 32-bit mode, even if the task 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * is running in 26-bit. 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_ONSTACK allows alternate signal stacks (see sigaltstack(2)). 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_RESTART flag to get restarting signals (which were the default long ago) 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_NODEFER prevents the current signal from being masked in the handler. 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_RESETHAND clears the handler when the signal is delivered. 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Unix names RESETHAND and NODEFER respectively. 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NOCLDSTOP 0x00000001 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NOCLDWAIT 0x00000002 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_SIGINFO 0x00000004 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_THIRTYTWO 0x02000000 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_RESTORER 0x04000000 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_ONSTACK 0x08000000 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_RESTART 0x10000000 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NODEFER 0x40000000 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_RESETHAND 0x80000000 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NOMASK SA_NODEFER 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_ONESHOT SA_RESETHAND 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * sigaltstack controls 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SS_ONSTACK 1 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SS_DISABLE 2 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MINSIGSTKSZ 2048 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSTKSZ 8192 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 11463b852a6b67d0820d388b0ecd0da83ccb4048b8dArnd Bergmann#include <asm-generic/signal-defs.h> 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__ 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct old_sigaction { 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __sighandler_t sa_handler; 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds old_sigset_t sa_mask; 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sa_flags; 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __sigrestore_t sa_restorer; 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sigaction { 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __sighandler_t sa_handler; 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sa_flags; 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __sigrestore_t sa_restorer; 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds sigset_t sa_mask; /* mask last for extensibility */ 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct k_sigaction { 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct sigaction sa; 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Here we must cater to libcs that poke about in kernel headers. */ 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sigaction { 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds union { 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds __sighandler_t _sa_handler; 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*_sa_sigaction)(int, struct siginfo *, void *); 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } _u; 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds sigset_t sa_mask; 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long sa_flags; 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*sa_restorer)(void); 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define sa_handler _u._sa_handler 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define sa_sigaction _u._sa_sigaction 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL__ */ 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct sigaltstack { 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void __user *ss_sp; 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int ss_flags; 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t ss_size; 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} stack_t; 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__ 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/sigcontext.h> 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ptrace_signal_deliver(regs, cookie) do { } while (0) 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 165