diff options
author | Andreas Kling <kling@serenityos.org> | 2021-01-12 12:17:30 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-01-12 12:17:46 +0100 |
commit | 13d7c09125f8eec703d0a43a9a87fc8aa08f7319 (patch) | |
tree | 70fd643c429cea5c1f9362c2674511d17a53f3b5 /Userland/Libraries/LibC/signal.h | |
parent | dc28c07fa526841e05e16161c74a6c23984f1dd5 (diff) | |
download | serenity-13d7c09125f8eec703d0a43a9a87fc8aa08f7319.zip |
Libraries: Move to Userland/Libraries/
Diffstat (limited to 'Userland/Libraries/LibC/signal.h')
-rw-r--r-- | Userland/Libraries/LibC/signal.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Userland/Libraries/LibC/signal.h b/Userland/Libraries/LibC/signal.h new file mode 100644 index 0000000000..65c98603d4 --- /dev/null +++ b/Userland/Libraries/LibC/signal.h @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include <signal_numbers.h> +#include <sys/types.h> + +__BEGIN_DECLS + +typedef void (*__sighandler_t)(int); +typedef __sighandler_t sighandler_t; + +typedef uint32_t sigset_t; +typedef uint32_t sig_atomic_t; + +union sigval { + int sival_int; + void* sival_ptr; +}; + +typedef struct siginfo { + int si_signo; + int si_code; + pid_t si_pid; + uid_t si_uid; + void* si_addr; + int si_status; + union sigval si_value; +} siginfo_t; + +struct sigaction { + union { + void (*sa_handler)(int); + void (*sa_sigaction)(int, siginfo_t*, void*); + }; + sigset_t sa_mask; + int sa_flags; +}; + +int kill(pid_t, int sig); +int killpg(int pgrp, int sig); +sighandler_t signal(int sig, sighandler_t); +int pthread_sigmask(int how, const sigset_t* set, sigset_t* ol_dset); +int sigaction(int sig, const struct sigaction* act, struct sigaction* old_act); +int sigemptyset(sigset_t*); +int sigfillset(sigset_t*); +int sigaddset(sigset_t*, int sig); +int sigdelset(sigset_t*, int sig); +int sigismember(const sigset_t*, int sig); +int sigprocmask(int how, const sigset_t* set, sigset_t* old_set); +int sigpending(sigset_t*); +int sigsuspend(const sigset_t*); +int raise(int sig); +int getsignalbyname(const char*); +const char* getsignalname(int); + +extern const char* sys_siglist[NSIG]; + +#define SIG_DFL ((__sighandler_t)0) +#define SIG_ERR ((__sighandler_t)-1) +#define SIG_IGN ((__sighandler_t)1) + +#define SA_NOCLDSTOP 1 +#define SA_NOCLDWAIT 2 +#define SA_SIGINFO 4 +#define SA_ONSTACK 0x08000000 +#define SA_RESTART 0x10000000 +#define SA_NODEFER 0x40000000 +#define SA_RESETHAND 0x80000000 + +#define SA_NOMASK SA_NODEFER +#define SA_ONESHOT SA_RESETHAND + +#define SIG_BLOCK 0 +#define SIG_UNBLOCK 1 +#define SIG_SETMASK 2 + +#define CLD_EXITED 0 +#define CLD_KILLED 1 +#define CLD_DUMPED 2 +#define CLD_TRAPPED 3 +#define CLD_STOPPED 4 +#define CLD_CONTINUED 5 + +__END_DECLS |