1 <assertions> 2 <assertion id="1" tag="ref:XBD6:10713:10996"> 3 The signal.h header file exists 4 </assertion> 5 <assertion id="2" tag="ref:XBD6:10722:10729"> 6 The signal.h header defines the symbols SIG_DFL, SIG_ERR, SIG_HOLD 7 and SIG_IGN as 'void (*) int'. 8 </assertion> 9 <assertion id="3" tag="ref:XBD6:10730:10732"> 10 The signal.h header defines sig_atomic_t. 11 </assertion> 12 <assertion id="4" tag="ref:XBD6:10733:10733"> 13 The signal.h header defines sigset_t. 14 </assertion> 15 <assertion id="5" tag="ref:XBD6:10734:10734"> 16 The sys/types.h header defines pid_t. 17 </assertion> 18 <assertion id="6" tag="ref:XBD6:10735:10741 pt:RTS"> 19 The signal.h header defines a structure named sigevent which has at least: 20 int sigev_notify 21 int sigev_signo 22 union sigval sigev_value 23 void(*)(union sigval) sigev_notify_function 24 (pthread_attr_t *) sigev_notify_attributes 25 </assertion> 26 <assertion id="7" tag="ref:XBD6:10742:10747 pt:RTS"> 27 For sigev_notify (assertion 6), the following values are defined: 28 SIGEV_NONE 29 SIGEV_SIGNAL 30 SIGEV_THREAD 31 </assertion> 32 <assertion id="8" tag="ref:XBD6:10748:10750 pt:RTS"> 33 The sigval union (assertion 6) is defined as: 34 int sival_int 35 void *sival_ptr 36 </assertion> 37 <assertion id="9" tag="ref:XBD6:10751:10753 pt:RTS"> 38 The signal.h header declares SIGRTMIN and SIGRTMAX. These are macros 39 that evaluate to integer expressions for the minimum and maximum signal 40 numbers reserved for realtime signals. 41 </assertion> 42 <assertion id="10" tag="ref:XBD6:10754:10755 pt:RTS"> 43 The range SIGRTMIN-SIGRTMAX doesn't overlap pre-defined signals (see 44 below). 45 </assertion> 46 <assertion id="11" tag="ref:XBD6:10756:10757 pt:RTS"> 47 The SIGRTMIN-SIGRTMAX range includes at least {RTSIG_MAX} signal 48 numbers. 49 </assertion> 50 <assertion id="12" tag="ref:XBD6:10758:10758 pt:RTS"> 51 Realtime signal behavior may or may not be supported for non-realtime 52 signals. This is defined by the implementation. 53 </assertion> 54 <assertion id="13" tag="ref:XBD6:10761:10762"> 55 The value 0 is not used in any signals, but is reserved as the null signal. 56 </assertion> 57 <assertion id="14" tag="ref:XBD6:10765:10797"> 58 The following signals are always (on all implementations) supported: 59 SIGABRT 60 SIGALRM 61 SIGBUS 62 SIGCHLD 63 SIGCONT 64 SIGFPE 65 SIGHUP 66 SIGILL 67 SIGINT 68 SIGKILL 69 SIGPIPE 70 SIGQUIT 71 SIGSEGV 72 SIGSTOP 73 SIGTERM 74 SIGTSTP 75 SIGTTIN 76 SIGTTOU 77 SIGUSR1 78 SIGUSR2 79 SIGPOLL 80 SIGPROF 81 SIGSYS 82 SIGTRAP 83 SIGURG 84 SIGVTALRM 85 SIGXCPU 86 SIGXFSZ 87 </assertion> 88 <assertion id="15" tag="ref:XBD6:10808:10817"> 89 The signal.h header declares the struct sigaction which has, at a minimum, 90 the following members: 91 void (*sa_handler)(int) 92 sigset_t sa_mask 93 int sa_flags 94 void (*)(int, siginfo_t *, void *) sa_sigaction 95 </assertion> 96 <assertion id="16" tag="ref:XBD6:10820:10839"> 97 The constants below are declared: 98 SA_NOCLDSTOP 99 SIG_BLOCK 100 SIG_UNBLOCK 101 SIG_SETMASK 102 SA_ONSTACK 103 SA_RESETHAND 104 SA_RESTART 105 SA_SIGINFO 106 SA_NOCLDWAIT 107 SA_NODEFER 108 SS_ONSTACK 109 SS_DISABLE 110 MINSIGSTKSZ 111 SIGSTKSZ 112 </assertion> 113 <assertion id="17" tag="ref:XBD6:10840:10840"> 114 The ucontext.h header shall define ucontext_t. 115 </assertion> 116 <assertion id="18" tag="ref:XBD6:10841:10841"> 117 The ucontext.h header shall define mcontext_t. 118 </assertion> 119 <assertion id="19" tag="ref:XBD6:10842:10846"> 120 The signal.h header defines the structure stack_t which includes the 121 following, at a minimum: 122 void *ss_sp 123 size_t ss_size 124 int ss_flags 125 </assertion> 126 <assertion id="20" tag="ref:XBD6:10847:10850"> 127 The signal.h header defines the structure sigstack which includes the 128 following, at a minimum: 129 int ss_onstack 130 void *ss_sp 131 </assertion> 132 <assertion id="21" tag="ref:XBD6:10852:10864"> 133 The signal.h header defines the structure siginfo_t which includes the 134 following, at a minimum: 135 int si_signo 136 int si_errno 137 int si_code 138 pid_t si_pid 139 uid_t si_uid 140 void *si_addr 141 int si_status 142 long si_band 143 union sigval si_value 144 </assertion> 145 <assertion id="22" tag="ref:XBD6:10867:10910"> 146 The following macros are defined: 147 ILL_ILLOPC 148 ILL_ILLOPN 149 ILL_ILLADR 150 ILL_ILLTRP 151 ILL_PRVOPC 152 ILL_PRVREG 153 ILL_COPROC 154 ILL_BADSTK 155 FPE_INTDIV 156 FPE_INTOVF 157 FPE_FLTDIV 158 FPE_FLTOVF 159 FPE_FLTUND 160 FPE_FLTRES 161 FPE_FLTINV 162 FPE_FLTSUB 163 SEGV_MAPERR 164 SEGV_ACCERR 165 BUS_ADRALN 166 BUS_ADRERR 167 BUS_OBJERR 168 TRAP_BRKPT 169 TRAP_TRACE 170 CLD_EXITED 171 CLD_KILLED 172 CLD_DUMPED 173 CLD_TRAPPED 174 CLD_STOPPED 175 CLD_CONTINUED 176 POLL_IN 177 POLL_OUT 178 POLL_MSG 179 POLL_ERR 180 POLL_PRI 181 POLL_HUP 182 SI_USER 183 SI_QUEUE 184 SI_TIMER 185 SI_ASYNCIO 186 SI_MESGQ 187 </assertion> 188 <assertion id="23" tag="ref:XBD6:10929:10929 pt:XSI"> 189 The function below is declared: 190 void (*bsd_signal(int, void (*)(int)))(int); 191 </assertion> 192 <assertion id="24" tag="ref:XBD6:10930:10930 pt:CX"> 193 The function below is declared: 194 int kill(pid_t, int); 195 </assertion> 196 <assertion id="25" tag="ref:XBD6:10931:10931 pt:XSI"> 197 The function below is declared: 198 int killpg(pid_t, int); 199 </assertion> 200 <assertion id="26" tag="ref:XBD6:10932:10932 pt:THR"> 201 The function below is declared: 202 int pthread_kill(pthread_t, int); 203 </assertion> 204 <assertion id="27" tag="ref:XBD6:10933:10933"> 205 The function below is declared: 206 int pthread_sigmask(int, const sigset_t *, sigset_t *); 207 </assertion> 208 <assertion id="28" tag="ref:XBD6:10934:10934"> 209 The function below is declared: 210 int raise(int); 211 </assertion> 212 <assertion id="29" tag="ref:XBD6:10935:10936 pt:CX"> 213 The function below is declared: 214 int sigaction(int, const struct sigaction *restrict, 215 struct sigaction *restrict); 216 </assertion> 217 <assertion id="30" tag="ref:XBD6:10937:10937"> 218 The function below is declared: 219 int sigaddset(sigset_t *, int); 220 </assertion> 221 <assertion id="31" tag="ref:XBD6:10938:10938 pt:XSI"> 222 The function below is declared: 223 int sigaltstack(const stack_t *restrict, stack_t *restrict); 224 </assertion> 225 <assertion id="32" tag="ref:XBD6:10939:10939 pt:CX"> 226 The function below is declared: 227 int sigdelset(sigset_t *, int); 228 </assertion> 229 <assertion id="33" tag="ref:XBD6:10940:10940"> 230 The function below is declared: 231 int sigemptyset(sigset_t *); 232 </assertion> 233 <assertion id="34" tag="ref:XBD6:10941:10941"> 234 The function below is declared: 235 int sigfillset(sigset_t *); 236 </assertion> 237 <assertion id="35" tag="ref:XBD6:10942:10942 pt:XSI"> 238 The function below is declared: 239 int sighold(int); 240 </assertion> 241 <assertion id="36" tag="ref:XBD6:10943:10943 pt:XSI"> 242 The function below is declared: 243 int sigignore(int); 244 </assertion> 245 <assertion id="37" tag="ref:XBD6:10944:10944"> 246 The function below is declared: 247 int siginterrupt(int, int); 248 </assertion> 249 <assertion id="38" tag="ref:XBD6:10945:10945 pt:CX"> 250 The function below is declared: 251 int sigismember(const sigset_t *, int); 252 </assertion> 253 <assertion id="39" tag="ref:XBD6:10946:10946"> 254 The function below is declared: 255 void (*signal(int, void (*)(int)))(int); 256 </assertion> 257 <assertion id="40" tag="ref:XBD6:10947:10947 pt:XSI"> 258 The function below is declared: 259 int sigpause(int); 260 </assertion> 261 <assertion id="41" tag="ref:XBD6:10948:10948 pt:CX"> 262 The function below is declared: 263 int sigpending(sigset_t *); 264 </assertion> 265 <assertion id="42" tag="ref:XBD6:10949:10949"> 266 The function below is declared: 267 int sigprocmask(int, const sigset_t *restrict, sigset_t *restrict); 268 </assertion> 269 <assertion id="43" tag="ref:XBD6:10950:10950 pt:RTS"> 270 The function below is declared: 271 int sigqueue(pid_t, int, const union sigval); 272 </assertion> 273 <assertion id="44" tag="ref:XBD6:10951:10951 pt:XSI"> 274 The function below is declared: 275 int sigrelse(int); 276 </assertion> 277 <assertion id="45" tag="ref:XBD6:10952:10952"> 278 The function below is declared: 279 void (*sigset(int, void (*)(int)))(int); 280 </assertion> 281 <assertion id="46" tag="ref:XBD6:10953:10953 pt:CX"> 282 The function below is declared: 283 int sigsuspend(const sigset_t *); 284 </assertion> 285 <assertion id="47" tag="ref:XBD6:10954:10955"> 286 The function below is declared: 287 int sigtimedwait(const sigset_t *restrict, siginfo_t *restrict, 288 const struct timespec *restrict); 289 </assertion> 290 <assertion id="48" tag="ref:XBD6:10956:10956 pt:CX"> 291 The function below is declared: 292 int sigwait(const sigset_t *restrict, int *restrict); 293 </assertion> 294 <assertion id="49" tag="ref:XBD6:10957:10957 pt:RTS"> 295 The function below is declared: 296 int sigwaitinfo(const sigset_t *restrict, siginfo_t *restrict); 297 </assertion> 298 <assertion id="50" tag="ref:XBD6:10959:10959"> 299 Inclusion of the signal.h header may make visible all symbols from 300 the time.h header. 301 </assertion> 302 </assertions> 303