cygwin/signal.h: Remove SI_QUEUE unimplemented comment

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2017-08-03 14:54:02 +02:00
parent a1c2491f70
commit 54ed68a781
2 changed files with 17 additions and 11 deletions

View File

@ -265,8 +265,7 @@ enum
SI_MESGQ, /* sent by real time mesq state change SI_MESGQ, /* sent by real time mesq state change
(currently unimplemented) */ (currently unimplemented) */
SI_TIMER, /* sent by timer expiration */ SI_TIMER, /* sent by timer expiration */
SI_QUEUE, /* sent by sigqueue (currently SI_QUEUE, /* sent by sigqueue */
unimplemented) */
SI_KERNEL, /* sent by system */ SI_KERNEL, /* sent by system */
ILL_ILLOPC, /* illegal opcode */ ILL_ILLOPC, /* illegal opcode */

View File

@ -623,14 +623,9 @@ sigwaitinfo (const sigset_t *set, siginfo_t *info)
return res; return res;
} }
/* FIXME: SUSv3 says that this function should block until the signal has int
actually been delivered. Currently, this will only happen when sending __SYS_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t *si)
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); pinfo dest (pid);
if (!dest) if (!dest)
{ {
@ -639,15 +634,27 @@ sigqueue (pid_t pid, int sig, const union sigval value)
} }
if (sig == 0) if (sig == 0)
return 0; return 0;
if (sig < 0 || sig >= NSIG) if (sig < 0 || sig >= NSIG
|| !si || si->si_code < SI_ASYNCIO || si->si_code > SI_KERNEL)
{ {
set_errno (EINVAL); set_errno (EINVAL);
return -1; 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_signo = sig;
si.si_code = SI_QUEUE; si.si_code = SI_QUEUE;
si.si_value = value; si.si_value = value;
return sig_send (dest, si); return __SYS_rt_sigqueueinfo (pid, sig, &si);
} }
extern "C" int extern "C" int