diff options
author | Yaakov Selkowitz <yselkowi@redhat.com> | 2017-06-14 18:20:05 +0300 |
---|---|---|
committer | Yaakov Selkowitz <yselkowi@redhat.com> | 2017-06-14 22:23:52 +0300 |
commit | dde6af6f82d117532cc8a57f34ccbb52ca3160fa (patch) | |
tree | 8c72371339bef911eb50cf430fee33d85631d5ef /winsup/cygwin | |
parent | 40ca6f02ed9083890f8e2aecaca7df6e2a72ae7d (diff) |
Export XSI sigpause
There are two common sigpause variants, both of which take an int argument.
If you request _XOPEN_SOURCE or _GNU_SOURCE, you get the System V version,
which removes the given signal from the process's signal mask; otherwise
you get the BSD version, which sets the process's signal mask to the given
value.
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/common.din | 1 | ||||
-rw-r--r-- | winsup/cygwin/include/cygwin/version.h | 3 | ||||
-rw-r--r-- | winsup/cygwin/signal.cc | 12 |
3 files changed, 15 insertions, 1 deletions
diff --git a/winsup/cygwin/common.din b/winsup/cygwin/common.din index 6620700c2..75fe05c1f 100644 --- a/winsup/cygwin/common.din +++ b/winsup/cygwin/common.din @@ -102,6 +102,7 @@ __wrap__ZdlPv NOSIGFE # void operator delete(void *p) throw() __wrap__ZdlPvRKSt9nothrow_t NOSIGFE # void operator delete(void *p, const std::nothrow_t &nt) throw() __xdrrec_getrec SIGFE __xdrrec_setnonblock SIGFE +__xpg_sigpause SIGFE __xpg_strerror_r SIGFE _exit SIGFE _feinitialise NOSIGFE diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 7baca6158..c0254a8e0 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -475,12 +475,13 @@ details. */ 308: Export dladdr. 309: Export getloadavg. 310: Export reallocarray. + 311: Export __xpg_sigpause. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 310 +#define CYGWIN_VERSION_API_MINOR 311 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible changes are made to the shared diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index f371a231b..fbd2b241e 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -524,6 +524,18 @@ sigpause (int signal_mask) } extern "C" int +__xpg_sigpause (int sig) +{ + int res; + sigset_t signal_mask; + sigprocmask (0, NULL, &signal_mask); + sigdelset (&signal_mask, sig); + res = handle_sigsuspend (signal_mask); + syscall_printf ("%R = __xpg_sigpause(%y)", res, sig); + return res; +} + +extern "C" int pause (void) { int res = handle_sigsuspend (_my_tls.sigmask); |