OSDN Git Service

* cygwin.din (pthread_sigqueue): Export.
authoryselkowitz <yselkowitz>
Fri, 6 Jan 2012 07:12:15 +0000 (07:12 +0000)
committeryselkowitz <yselkowitz>
Fri, 6 Jan 2012 07:12:15 +0000 (07:12 +0000)
* posix.sgml (std-gnu): Add pthread_sigqueue.
* thread.cc (pthread_sigqueue): New function.
* include/thread.h (pthread_sigqueue): New function.
* include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.

winsup/cygwin/ChangeLog
winsup/cygwin/cygwin.din
winsup/cygwin/include/cygwin/version.h
winsup/cygwin/include/pthread.h
winsup/cygwin/posix.sgml
winsup/cygwin/thread.cc

index a696795..8744cc8 100644 (file)
@@ -1,3 +1,11 @@
+2012-01-06  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       * cygwin.din (pthread_sigqueue): Export.
+       * posix.sgml (std-gnu): Add pthread_sigqueue.
+       * thread.cc (pthread_sigqueue): New function.
+       * include/thread.h (pthread_sigqueue): New function.
+       * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
+
 2012-01-02  Christopher Faylor  <me.cygwin2011@cgf.cx>
 
        * path.cc (get_current_dir_name): Avoid memory leak.  Don't return PWD
index b46839c..b2a974f 100644 (file)
@@ -1270,6 +1270,7 @@ pthread_setschedparam SIGFE
 pthread_setschedprio SIGFE
 pthread_setspecific SIGFE
 pthread_sigmask SIGFE
+pthread_sigqueue SIGFE
 pthread_suspend SIGFE
 pthread_spin_destroy SIGFE
 pthread_spin_init SIGFE
index 5504583..7b4b207 100644 (file)
@@ -427,12 +427,13 @@ details. */
       256: Add CW_ALLOC_DRIVE_MAP, CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP.
       257: Export getpt.
       258: Export get_current_dir_name.
+      259: Export pthread_sigqueue.
      */
 
      /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
 
 #define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 258
+#define CYGWIN_VERSION_API_MINOR 259
 
      /* There is also a compatibity version number associated with the
        shared memory regions.  It is incremented when incompatible
index 8aa734a..f56de00 100644 (file)
@@ -202,6 +202,7 @@ void pthread_testcancel (void);
 /* Non posix calls */
 
 int pthread_getattr_np (pthread_t, pthread_attr_t *);
+int pthread_sigqueue (pthread_t *, int, const union sigval);
 int pthread_suspend (pthread_t);
 int pthread_continue (pthread_t);
 int pthread_yield (void);
index 185964f..bba9f07 100644 (file)
@@ -1133,6 +1133,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
     pow10f
     ppoll
     pthread_getattr_np
+    pthread_sigqueue
     ptsname_r
     removexattr
     setxattr
index 9ca4675..d2a6704 100644 (file)
@@ -3093,6 +3093,24 @@ pthread_sigmask (int operation, const sigset_t *set, sigset_t *old_set)
   return res;
 }
 
+extern "C" int
+pthread_sigqueue (pthread_t *thread, int sig, const union sigval value)
+{
+  siginfo_t si = {0};
+
+  if (!pthread::is_good_object (thread))
+    return EINVAL;
+  if (!(*thread)->valid)
+    return ESRCH;
+
+  si.si_signo = sig;
+  si.si_code = SI_QUEUE;
+  si.si_value = value;
+  si.si_pid = myself->pid;
+  si.si_uid = myself->uid;
+  return sig_send (NULL, si, (*thread)->cygtls);
+}
+
 /* ID */
 
 extern "C" int