From f41d402bd44b6c1f1a1b17129cec24216b148dc8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 3 Aug 2017 14:55:21 +0200 Subject: Revert "cygwin/signal.h: Remove SI_QUEUE unimplemented comment" This reverts commit 54ed68a781fe8a36d08352503524e61534a25e07. --- winsup/cygwin/include/cygwin/signal.h | 3 ++- winsup/cygwin/signal.cc | 25 +++++++++---------------- 2 files changed, 11 insertions(+), 17 deletions(-) (limited to 'winsup') diff --git a/winsup/cygwin/include/cygwin/signal.h b/winsup/cygwin/include/cygwin/signal.h index a8c852ddb..af0833688 100644 --- a/winsup/cygwin/include/cygwin/signal.h +++ b/winsup/cygwin/include/cygwin/signal.h @@ -265,7 +265,8 @@ enum SI_MESGQ, /* sent by real time mesq state change (currently unimplemented) */ SI_TIMER, /* sent by timer expiration */ - SI_QUEUE, /* sent by sigqueue */ + SI_QUEUE, /* sent by sigqueue (currently + unimplemented) */ SI_KERNEL, /* sent by system */ ILL_ILLOPC, /* illegal opcode */ diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 4b63e9917..fbd2b241e 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -623,9 +623,14 @@ sigwaitinfo (const sigset_t *set, siginfo_t *info) return res; } -int -__SYS_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t *si) +/* FIXME: SUSv3 says that this function should block until the signal has + actually been delivered. Currently, this will only happen when sending + signals to the current process. It will not happen when sending signals + to other processes. */ +extern "C" int +sigqueue (pid_t pid, int sig, const union sigval value) { + siginfo_t si = {0}; pinfo dest (pid); if (!dest) { @@ -634,27 +639,15 @@ __SYS_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t *si) } if (sig == 0) return 0; - if (sig < 0 || sig >= NSIG - || !si || si->si_code < SI_ASYNCIO || si->si_code > SI_KERNEL) + if (sig < 0 || sig >= NSIG) { set_errno (EINVAL); return -1; } - return sig_send (dest, *si); -} - -/* FIXME: SUSv3 says that this function should block until the signal has - actually been delivered. Currently, this will only happen when sending - signals to the current process. It will not happen when sending signals - to other processes. */ -extern "C" int -sigqueue (pid_t pid, int sig, const union sigval value) -{ - siginfo_t si = {0}; si.si_signo = sig; si.si_code = SI_QUEUE; si.si_value = value; - return __SYS_rt_sigqueueinfo (pid, sig, &si); + return sig_send (dest, si); } extern "C" int -- cgit v1.2.3