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 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #define SIGHUP 1 /**< Hangup */ 16 #define SIGINT 2 /**< Interrupt */ 17 #define SIGQUIT 3 /**< Quit */ 18 #define SIGILL 4 /**< Illegal instruction */ 19 #define SIGTRAP 5 /**< Trace/breakpoint trap */ 20 #define SIGABRT 6 /**< Aborted */ 21 #define SIGBUS 7 /**< Bus error */ 22 #define SIGFPE 8 /**< Arithmetic exception */ 23 #define SIGKILL 9 /**< Killed */ 24 #define SIGUSR1 10 /**< User-defined signal 1 */ 25 #define SIGSEGV 11 /**< Invalid memory reference */ 26 #define SIGUSR2 12 /**< User-defined signal 2 */ 27 #define SIGPIPE 13 /**< Broken pipe */ 28 #define SIGALRM 14 /**< Alarm clock */ 29 #define SIGTERM 15 /**< Terminated */ 30 /* 16 not used */ 31 #define SIGCHLD 17 /**< Child status changed */ 32 #define SIGCONT 18 /**< Continued */ 33 #define SIGSTOP 19 /**< Stop executing */ 34 #define SIGTSTP 20 /**< Stopped */ 35 #define SIGTTIN 21 /**< Stopped (read) */ 36 #define SIGTTOU 22 /**< Stopped (write) */ 37 #define SIGURG 23 /**< Urgent I/O condition */ 38 #define SIGXCPU 24 /**< CPU time limit exceeded */ 39 #define SIGXFSZ 25 /**< File size limit exceeded */ 40 #define SIGVTALRM 26 /**< Virtual timer expired */ 41 #define SIGPROF 27 /**< Profiling timer expired */ 42 /* 28 not used */ 43 #define SIGPOLL 29 /**< Pollable event occurred */ 44 /* 30 not used */ 45 #define SIGSYS 31 /**< Bad system call */ 46 47 #define RTSIG_MAX CONFIG_POSIX_RTSIG_MAX 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 #ifdef CONFIG_POSIX_SIGNAL 96 char *strsignal(int signum); 97 int sigemptyset(sigset_t *set); 98 int sigfillset(sigset_t *set); 99 int sigaddset(sigset_t *set, int signo); 100 int sigdelset(sigset_t *set, int signo); 101 int sigismember(const sigset_t *set, int signo); 102 int sigprocmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); 103 104 int pthread_sigmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); 105 #endif /* CONFIG_POSIX_SIGNAL */ 106 107 #ifdef __cplusplus 108 } 109 #endif 110 111 #endif /* ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ */ 112