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
(currently unimplemented) */
SI_TIMER, /* sent by timer expiration */
SI_QUEUE, /* sent by sigqueue (currently
unimplemented) */
SI_QUEUE, /* sent by sigqueue */
SI_KERNEL, /* sent by system */
ILL_ILLOPC, /* illegal opcode */

View File

@ -623,14 +623,9 @@ sigwaitinfo (const sigset_t *set, siginfo_t *info)
return res;
}
/* 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)
int
__SYS_rt_sigqueueinfo (pid_t pid, int sig, siginfo_t *si)
{
siginfo_t si = {0};
pinfo dest (pid);
if (!dest)
{
@ -639,15 +634,27 @@ sigqueue (pid_t pid, int sig, const union sigval value)
}
if (sig == 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);
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 sig_send (dest, si);
return __SYS_rt_sigqueueinfo (pid, sig, &si);
}
extern "C" int