1 /* 2 * Copyright (c) 2018 Intel Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ 7 #define ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ 8 9 #include "posix_types.h" 10 #include "posix_features.h" 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 #define SIGHUP 1 /**< Hangup */ 17 #define SIGINT 2 /**< Interrupt */ 18 #define SIGQUIT 3 /**< Quit */ 19 #define SIGILL 4 /**< Illegal instruction */ 20 #define SIGTRAP 5 /**< Trace/breakpoint trap */ 21 #define SIGABRT 6 /**< Aborted */ 22 #define SIGBUS 7 /**< Bus error */ 23 #define SIGFPE 8 /**< Arithmetic exception */ 24 #define SIGKILL 9 /**< Killed */ 25 #define SIGUSR1 10 /**< User-defined signal 1 */ 26 #define SIGSEGV 11 /**< Invalid memory reference */ 27 #define SIGUSR2 12 /**< User-defined signal 2 */ 28 #define SIGPIPE 13 /**< Broken pipe */ 29 #define SIGALRM 14 /**< Alarm clock */ 30 #define SIGTERM 15 /**< Terminated */ 31 /* 16 not used */ 32 #define SIGCHLD 17 /**< Child status changed */ 33 #define SIGCONT 18 /**< Continued */ 34 #define SIGSTOP 19 /**< Stop executing */ 35 #define SIGTSTP 20 /**< Stopped */ 36 #define SIGTTIN 21 /**< Stopped (read) */ 37 #define SIGTTOU 22 /**< Stopped (write) */ 38 #define SIGURG 23 /**< Urgent I/O condition */ 39 #define SIGXCPU 24 /**< CPU time limit exceeded */ 40 #define SIGXFSZ 25 /**< File size limit exceeded */ 41 #define SIGVTALRM 26 /**< Virtual timer expired */ 42 #define SIGPROF 27 /**< Profiling timer expired */ 43 /* 28 not used */ 44 #define SIGPOLL 29 /**< Pollable event occurred */ 45 /* 30 not used */ 46 #define SIGSYS 31 /**< Bad system call */ 47 48 #define SIGRTMIN 32 49 #define SIGRTMAX (SIGRTMIN + RTSIG_MAX) 50 #define _NSIG (SIGRTMAX + 1) 51 52 BUILD_ASSERT(RTSIG_MAX >= 0); 53 54 typedef struct { 55 unsigned long sig[DIV_ROUND_UP(_NSIG, BITS_PER_LONG)]; 56 } sigset_t; 57 58 #ifndef SIGEV_NONE 59 #define SIGEV_NONE 1 60 #endif 61 62 #ifndef SIGEV_SIGNAL 63 #define SIGEV_SIGNAL 2 64 #endif 65 66 #ifndef SIGEV_THREAD 67 #define SIGEV_THREAD 3 68 #endif 69 70 #ifndef SIG_BLOCK 71 #define SIG_BLOCK 0 72 #endif 73 #ifndef SIG_SETMASK 74 #define SIG_SETMASK 1 75 #endif 76 #ifndef SIG_UNBLOCK 77 #define SIG_UNBLOCK 2 78 #endif 79 80 typedef int sig_atomic_t; /* Atomic entity type (ANSI) */ 81 82 union sigval { 83 void *sival_ptr; 84 int sival_int; 85 }; 86 87 struct sigevent { 88 void (*sigev_notify_function)(union sigval val); 89 pthread_attr_t *sigev_notify_attributes; 90 union sigval sigev_value; 91 int sigev_notify; 92 int sigev_signo; 93 }; 94 95 char *strsignal(int signum); 96 int sigemptyset(sigset_t *set); 97 int sigfillset(sigset_t *set); 98 int sigaddset(sigset_t *set, int signo); 99 int sigdelset(sigset_t *set, int signo); 100 int sigismember(const sigset_t *set, int signo); 101 int sigprocmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); 102 103 int pthread_sigmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); 104 105 #ifdef __cplusplus 106 } 107 #endif 108 109 #endif /* ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ */ 110