[newlib-cygwin] Revert "cygwin/signal.h: Remove SI_QUEUE unimplemented comment"

Corinna Vinschen corinna@sourceware.org
Thu Aug 3 12:57:00 GMT 2017


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=f41d402bd44b6c1f1a1b17129cec24216b148dc8

commit f41d402bd44b6c1f1a1b17129cec24216b148dc8
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Thu Aug 3 14:55:21 2017 +0200

    Revert "cygwin/signal.h: Remove SI_QUEUE unimplemented comment"
    
    This reverts commit 54ed68a781fe8a36d08352503524e61534a25e07.

Diff:
---
 winsup/cygwin/include/cygwin/signal.h |  3 ++-
 winsup/cygwin/signal.cc               | 25 +++++++++----------------
 2 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/winsup/cygwin/include/cygwin/signal.h b/winsup/cygwin/include/cygwin/signal.h
index a8c852d..af08336 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 4b63e99..fbd2b24 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



More information about the Cygwin-cvs mailing list