aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/signal.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2019-01-12 21:19:52 +0100
committerCorinna Vinschen <corinna@vinschen.de>2019-01-12 21:26:07 +0100
commit9e295a8d193e138808931816f5858761ff08f402 (patch)
tree62d319602869f3a2ee4991a4234b1eafc8ffe28c /winsup/cygwin/signal.cc
parent961be8d726a81918d8d34c9dae603e7820a2416f (diff)
downloadnewlib-9e295a8d193e138808931816f5858761ff08f402.zip
newlib-9e295a8d193e138808931816f5858761ff08f402.tar.gz
newlib-9e295a8d193e138808931816f5858761ff08f402.tar.bz2
Cygwin: posix timers: implement timer_getoverrun
- set DELAYTIMER_MAX to INT_MAX - make sure to set siginfo_t::si_overrun, as on Linux Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/signal.cc')
-rw-r--r--winsup/cygwin/signal.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc
index b3e257b..74d6eb6 100644
--- a/winsup/cygwin/signal.cc
+++ b/winsup/cygwin/signal.cc
@@ -20,6 +20,7 @@ details. */
#include "dtable.h"
#include "cygheap.h"
#include "cygwait.h"
+#include "timer.h"
#define _SA_NORESTART 0x8000
@@ -611,6 +612,12 @@ sigwait_common (const sigset_t *set, siginfo_t *info, PLARGE_INTEGER waittime)
else
{
_my_tls.lock ();
+ if (_my_tls.infodata.si_code == SI_TIMER)
+ {
+ timer_tracker *tt = (timer_tracker *)
+ _my_tls.infodata.si_tid;
+ _my_tls.infodata.si_overrun = tt->disarm_event ();
+ }
if (info)
*info = _my_tls.infodata;
res = _my_tls.infodata.si_signo;