diff options
| author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-10-22 15:46:04 +0200 | 
|---|---|---|
| committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-10-22 15:46:04 +0200 | 
| commit | e9b9c97c33c52e9eafaf6bf6d682e43ecfa3aea7 (patch) | |
| tree | 3845753f005bba882e99a83e2e9150fa56a6c81a | |
| parent | 251a3c19cb4bba47fcd38c697b3d7679b3edb137 (diff) | |
sleep: tiny code shrink
...or rather, it WILL BE code shrink when gcc become clever enough
to not emit a second, useless XORing of ebx:
31 db                  xor    %ebx,%ebx
85 c0                  test   %eax,%eax
74 11                  je     73 <__GI_sleep+0x73>
31 db                  xor    %ebx,%ebx    <=== ?!
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
| -rw-r--r-- | libc/unistd/sleep.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/libc/unistd/sleep.c b/libc/unistd/sleep.c index 438f5e282..6a237e3f9 100644 --- a/libc/unistd/sleep.c +++ b/libc/unistd/sleep.c @@ -82,6 +82,10 @@ unsigned int sleep (unsigned int seconds)      /* Run nanosleep, with SIGCHLD blocked if SIGCHLD is SIG_IGNed.  */      result = nanosleep (&ts, &ts); +    if (result != 0) { +	/* Got EINTR. Return remaining time.  */ +	result = (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L); +    }      if (!__sigismember (&set, SIGCHLD)) {  	/* We did block SIGCHLD, and old mask had no SIGCHLD bit. @@ -91,10 +95,6 @@ unsigned int sleep (unsigned int seconds)  	sigprocmask (SIG_SETMASK, &set, NULL); /* never fails */      } -    if (result != 0) -	/* Round remaining time.  */ -	result = (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L); -      return result;  }  #endif | 
