summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sleep.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-06-17 08:58:31 +0000
committerUlrich Drepper <drepper@redhat.com>2003-06-17 08:58:31 +0000
commitbbde852717f9db0b39190ab5774204522569239b (patch)
treefed5fa0d3f6d466fab513f87ee3338d5149519d4 /sysdeps/unix/sysv/linux/sleep.c
parent2667645020a4322a2730e340302748f1b0c1a1ce (diff)
Update.
2003-06-17 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/sleep.c: Use CANCELLATION_P if defined before returning because seconds==0.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sleep.c')
-rw-r--r--sysdeps/unix/sysv/linux/sleep.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/sleep.c b/sysdeps/unix/sysv/linux/sleep.c
index ae24afe1ae..ac92f6eced 100644
--- a/sysdeps/unix/sysv/linux/sleep.c
+++ b/sysdeps/unix/sysv/linux/sleep.c
@@ -24,7 +24,7 @@
#include <unistd.h>
/* We are going to use the `nanosleep' syscall of the kernel. But the
- kernel does not implement the sstupid SysV SIGCHLD vs. SIG_IGN
+ kernel does not implement the stupid SysV SIGCHLD vs. SIG_IGN
behaviour for this syscall. Therefore we have to emulate it here. */
unsigned int
__sleep (unsigned int seconds)
@@ -35,7 +35,12 @@ __sleep (unsigned int seconds)
/* This is not necessary but some buggy programs depend on this. */
if (seconds == 0)
- return 0;
+ {
+#ifdef CANCELLATION_P
+ CANCELLATION_P (THREAD_SELF);
+#endif
+ return 0;
+ }
/* Linux will wake up the system call, nanosleep, when SIGCHLD
arrives even if SIGCHLD is ignored. We have to deal with it