aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/signal.cc
diff options
context:
space:
mode:
authorThomas Pfaff <tpfaff@gmx.net>2003-01-14 20:05:49 +0000
committerThomas Pfaff <tpfaff@gmx.net>2003-01-14 20:05:49 +0000
commit7ec66a2c28257d1dc25b08f457b9030bf4528d6f (patch)
tree21c48205462bd02a2771d50d7248931eb67e4549 /winsup/cygwin/signal.cc
parentd83b482409d4e776ed93ae813905fe90a7c17d10 (diff)
downloadnewlib-7ec66a2c28257d1dc25b08f457b9030bf4528d6f.zip
newlib-7ec66a2c28257d1dc25b08f457b9030bf4528d6f.tar.gz
newlib-7ec66a2c28257d1dc25b08f457b9030bf4528d6f.tar.bz2
Apply sleep_cancel patch
Diffstat (limited to 'winsup/cygwin/signal.cc')
-rw-r--r--winsup/cygwin/signal.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc
index a23487f..c852907 100644
--- a/winsup/cygwin/signal.cc
+++ b/winsup/cygwin/signal.cc
@@ -74,12 +74,14 @@ sleep (unsigned int seconds)
sigframe thisframe (mainthread);
DWORD ms, start_time, end_time;
+ pthread_testcancel ();
+
ms = seconds * 1000;
start_time = GetTickCount ();
end_time = start_time + (seconds * 1000);
syscall_printf ("sleep (%d)", seconds);
- rc = WaitForSingleObject (signal_arrived, ms);
+ rc = pthread::cancelable_wait (signal_arrived, ms);
DWORD now = GetTickCount ();
if (rc == WAIT_TIMEOUT || now >= end_time)
ms = 0;
@@ -97,9 +99,11 @@ sleep (unsigned int seconds)
extern "C" unsigned int
usleep (unsigned int useconds)
{
+ pthread_testcancel ();
+
sig_dispatch_pending (0);
syscall_printf ("usleep (%d)", useconds);
- WaitForSingleObject (signal_arrived, (useconds + 500) / 1000);
+ pthread::cancelable_wait (signal_arrived, (useconds + 500) / 1000);
syscall_printf ("0 = usleep (%d)", useconds);
return 0;
}