summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibC/signal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibC/signal.cpp')
-rw-r--r--Userland/Libraries/LibC/signal.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/Userland/Libraries/LibC/signal.cpp b/Userland/Libraries/LibC/signal.cpp
index 603f09c07f..abbab504a4 100644
--- a/Userland/Libraries/LibC/signal.cpp
+++ b/Userland/Libraries/LibC/signal.cpp
@@ -16,24 +16,28 @@
extern "C" {
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
int kill(pid_t pid, int sig)
{
int rc = syscall(SC_kill, pid, sig);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/killpg.html
int killpg(int pgrp, int sig)
{
int rc = syscall(SC_killpg, pgrp, sig);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/raise.html
int raise(int sig)
{
// FIXME: Support multi-threaded programs.
return kill(getpid(), sig);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/signal.html
sighandler_t signal(int signum, sighandler_t handler)
{
struct sigaction new_act;
@@ -47,24 +51,28 @@ sighandler_t signal(int signum, sighandler_t handler)
return old_act.sa_handler;
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaction.html
int sigaction(int signum, const struct sigaction* act, struct sigaction* old_act)
{
int rc = syscall(SC_sigaction, signum, act, old_act);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigemptyset.html
int sigemptyset(sigset_t* set)
{
*set = 0;
return 0;
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigfillset.html
int sigfillset(sigset_t* set)
{
*set = 0xffffffff;
return 0;
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaddset.html
int sigaddset(sigset_t* set, int sig)
{
if (sig < 1 || sig > 32) {
@@ -75,12 +83,14 @@ int sigaddset(sigset_t* set, int sig)
return 0;
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaltstack.html
int sigaltstack(const stack_t* ss, stack_t* old_ss)
{
int rc = syscall(SC_sigaltstack, ss, old_ss);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigdelset.html
int sigdelset(sigset_t* set, int sig)
{
if (sig < 1 || sig > 32) {
@@ -91,6 +101,7 @@ int sigdelset(sigset_t* set, int sig)
return 0;
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigismember.html
int sigismember(const sigset_t* set, int sig)
{
if (sig < 1 || sig > 32) {
@@ -102,12 +113,14 @@ int sigismember(const sigset_t* set, int sig)
return 0;
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigprocmask.html
int sigprocmask(int how, const sigset_t* set, sigset_t* old_set)
{
int rc = syscall(SC_sigprocmask, how, set, old_set);
__RETURN_WITH_ERRNO(rc, rc, -1);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpending.html
int sigpending(sigset_t* set)
{
int rc = syscall(SC_sigpending, set);
@@ -149,6 +162,7 @@ const char* sys_siglist[NSIG] = {
"Bad system call",
};
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/siglongjmp.html
void siglongjmp(jmp_buf env, int val)
{
if (env->did_save_signal_mask) {
@@ -158,6 +172,7 @@ void siglongjmp(jmp_buf env, int val)
longjmp(env, val);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigsuspend.html
int sigsuspend(const sigset_t* set)
{
return pselect(0, nullptr, nullptr, nullptr, nullptr, set);
@@ -180,6 +195,7 @@ int sigwaitinfo(sigset_t const* set, siginfo_t* info)
return sigtimedwait(set, info, nullptr);
}
+// https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigtimedwait.html
int sigtimedwait(sigset_t const* set, siginfo_t* info, struct timespec const* timeout)
{
int rc = syscall(Syscall::SC_sigtimedwait, set, info, timeout);