Line data Source code
1 0 : /* 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 before posix_features.h (here) to avoid build errors against newlib */ 10 : #include <zephyr/posix/posix_types.h> 11 : #include "posix_features.h" 12 : 13 : #ifdef __cplusplus 14 : extern "C" { 15 : #endif 16 : 17 1 : #define SIGHUP 1 /**< Hangup */ 18 1 : #define SIGINT 2 /**< Interrupt */ 19 1 : #define SIGQUIT 3 /**< Quit */ 20 1 : #define SIGILL 4 /**< Illegal instruction */ 21 1 : #define SIGTRAP 5 /**< Trace/breakpoint trap */ 22 1 : #define SIGABRT 6 /**< Aborted */ 23 1 : #define SIGBUS 7 /**< Bus error */ 24 1 : #define SIGFPE 8 /**< Arithmetic exception */ 25 1 : #define SIGKILL 9 /**< Killed */ 26 1 : #define SIGUSR1 10 /**< User-defined signal 1 */ 27 1 : #define SIGSEGV 11 /**< Invalid memory reference */ 28 1 : #define SIGUSR2 12 /**< User-defined signal 2 */ 29 1 : #define SIGPIPE 13 /**< Broken pipe */ 30 1 : #define SIGALRM 14 /**< Alarm clock */ 31 1 : #define SIGTERM 15 /**< Terminated */ 32 : /* 16 not used */ 33 1 : #define SIGCHLD 17 /**< Child status changed */ 34 1 : #define SIGCONT 18 /**< Continued */ 35 1 : #define SIGSTOP 19 /**< Stop executing */ 36 1 : #define SIGTSTP 20 /**< Stopped */ 37 1 : #define SIGTTIN 21 /**< Stopped (read) */ 38 1 : #define SIGTTOU 22 /**< Stopped (write) */ 39 1 : #define SIGURG 23 /**< Urgent I/O condition */ 40 1 : #define SIGXCPU 24 /**< CPU time limit exceeded */ 41 1 : #define SIGXFSZ 25 /**< File size limit exceeded */ 42 1 : #define SIGVTALRM 26 /**< Virtual timer expired */ 43 1 : #define SIGPROF 27 /**< Profiling timer expired */ 44 : /* 28 not used */ 45 1 : #define SIGPOLL 29 /**< Pollable event occurred */ 46 : /* 30 not used */ 47 1 : #define SIGSYS 31 /**< Bad system call */ 48 : 49 0 : #define SIGRTMIN 32 50 0 : #define SIGRTMAX (SIGRTMIN + RTSIG_MAX) 51 : #define _NSIG (SIGRTMAX + 1) 52 : 53 : BUILD_ASSERT(RTSIG_MAX >= 0); 54 : 55 0 : typedef struct { 56 0 : unsigned long sig[DIV_ROUND_UP(_NSIG, BITS_PER_LONG)]; 57 : } sigset_t; 58 : 59 : #ifndef SIGEV_NONE 60 0 : #define SIGEV_NONE 1 61 : #endif 62 : 63 : #ifndef SIGEV_SIGNAL 64 0 : #define SIGEV_SIGNAL 2 65 : #endif 66 : 67 : #ifndef SIGEV_THREAD 68 0 : #define SIGEV_THREAD 3 69 : #endif 70 : 71 : #ifndef SIG_BLOCK 72 0 : #define SIG_BLOCK 0 73 : #endif 74 : #ifndef SIG_SETMASK 75 0 : #define SIG_SETMASK 1 76 : #endif 77 : #ifndef SIG_UNBLOCK 78 0 : #define SIG_UNBLOCK 2 79 : #endif 80 : 81 0 : #define SIG_DFL ((void *)0) 82 0 : #define SIG_IGN ((void *)1) 83 0 : #define SIG_ERR ((void *)-1) 84 : 85 0 : #define SI_USER 1 86 0 : #define SI_QUEUE 2 87 0 : #define SI_TIMER 3 88 0 : #define SI_ASYNCIO 4 89 0 : #define SI_MESGQ 5 90 : 91 0 : typedef int sig_atomic_t; /* Atomic entity type (ANSI) */ 92 : 93 0 : union sigval { 94 0 : void *sival_ptr; 95 0 : int sival_int; 96 : }; 97 : 98 0 : struct sigevent { 99 0 : void (*sigev_notify_function)(union sigval val); 100 0 : pthread_attr_t *sigev_notify_attributes; 101 0 : union sigval sigev_value; 102 0 : int sigev_notify; 103 0 : int sigev_signo; 104 : }; 105 : 106 0 : typedef struct { 107 0 : int si_signo; 108 0 : int si_code; 109 0 : union sigval si_value; 110 : } siginfo_t; 111 : 112 0 : struct sigaction { 113 0 : void (*sa_handler)(int signno); 114 0 : sigset_t sa_mask; 115 0 : int sa_flags; 116 0 : void (*sa_sigaction)(int signo, siginfo_t *info, void *context); 117 : }; 118 : 119 0 : typedef void (*sighandler_t)(int signo); 120 : 121 0 : unsigned int alarm(unsigned int seconds); 122 0 : int kill(pid_t pid, int sig); 123 0 : int pause(void); 124 0 : int raise(int signo); 125 0 : TOOLCHAIN_IGNORE_WSHADOW_BEGIN; 126 0 : int sigaction(int sig, const struct sigaction *ZRESTRICT act, struct sigaction *ZRESTRICT oact); 127 0 : TOOLCHAIN_IGNORE_WSHADOW_END; 128 0 : int sigpending(sigset_t *set); 129 0 : int sigsuspend(const sigset_t *sigmask); 130 0 : int sigwait(const sigset_t *ZRESTRICT set, int *ZRESTRICT signo); 131 0 : char *strsignal(int signum); 132 0 : int sigemptyset(sigset_t *set); 133 0 : int sigfillset(sigset_t *set); 134 0 : int sigaddset(sigset_t *set, int signo); 135 0 : int sigdelset(sigset_t *set, int signo); 136 0 : int sigismember(const sigset_t *set, int signo); 137 0 : sighandler_t signal(int signo, sighandler_t handler); 138 0 : int sigprocmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); 139 : 140 0 : int pthread_sigmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); 141 : 142 : #ifdef __cplusplus 143 : } 144 : #endif 145 : 146 : #endif /* ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ */