mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 13:30:06 +00:00
Update.
1999-10-14 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/sleep.c (__sleep): Optimize for zero seconds.
This commit is contained in:
parent
02ab9fe3d0
commit
907ea199d0
@ -1,3 +1,8 @@
|
||||
1999-10-14 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sleep.c (__sleep): Optimize for zero
|
||||
seconds.
|
||||
|
||||
1999-10-12 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Don't define
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Implementation of the POSIX sleep function using nanosleep.
|
||||
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
@ -31,9 +31,12 @@ __sleep (unsigned int seconds)
|
||||
{
|
||||
struct timespec ts = { tv_sec: (long int) seconds, tv_nsec: 0 };
|
||||
sigset_t set, oset;
|
||||
struct sigaction oact;
|
||||
unsigned int result;
|
||||
|
||||
/* This is not necessary but some buggy programs depend on this. */
|
||||
if (seconds == 0)
|
||||
return 0;
|
||||
|
||||
/* Linux will wake up the system call, nanosleep, when SIGCHLD
|
||||
arrives even if SIGCHLD is ignored. We have to deal with it
|
||||
in libc. We block SIGCHLD first. */
|
||||
@ -46,6 +49,10 @@ __sleep (unsigned int seconds)
|
||||
if (!__sigismember (&oset, SIGCHLD))
|
||||
{
|
||||
int saved_errno;
|
||||
struct sigaction oact;
|
||||
|
||||
if (__sigemptyset (&set) < 0 || __sigaddset (&set, SIGCHLD) < 0)
|
||||
return -1;
|
||||
|
||||
/* We get the signal handler for SIGCHLD. */
|
||||
if (__sigaction (SIGCHLD, (struct sigaction *) NULL, &oact) < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user