Merge "Fix usleep(3) return type to be POSIX-compliant."
This commit is contained in:
commit
0b5db51ea6
@ -145,7 +145,7 @@ extern int ftruncate(int, off_t);
|
|||||||
extern int pause(void);
|
extern int pause(void);
|
||||||
extern unsigned int alarm(unsigned int);
|
extern unsigned int alarm(unsigned int);
|
||||||
extern unsigned int sleep(unsigned int);
|
extern unsigned int sleep(unsigned int);
|
||||||
extern void usleep(unsigned long);
|
extern int usleep(unsigned long);
|
||||||
|
|
||||||
extern int gethostname(char *, size_t);
|
extern int gethostname(char *, size_t);
|
||||||
extern int sethostname(const char *, size_t);
|
extern int sethostname(const char *, size_t);
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
void usleep(unsigned long usec)
|
int usleep(unsigned long usec)
|
||||||
{
|
{
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
|
||||||
@ -43,10 +43,13 @@ void usleep(unsigned long usec)
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if ( nanosleep( &ts, &ts ) >= 0 )
|
if ( nanosleep( &ts, &ts ) == 0 )
|
||||||
break;
|
return 0;
|
||||||
|
|
||||||
|
// We try again if the nanosleep failure is EINTR.
|
||||||
|
// The other possible failures are EINVAL (which we should pass through),
|
||||||
|
// and ENOSYS, which doesn't happen.
|
||||||
if ( errno != EINTR )
|
if ( errno != EINTR )
|
||||||
break;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user