Hash :
e8eecfd3
Author :
Date :
2009-11-17T09:24:56
usleep: new module mingw usleep(1000000) failed with EINVAL, as allowed by POSIX, but contrary to GNU usage. Rather than implement an accurate usleep based on select or nanosleep, both of which drag in dependencies on external libraries, this version intentionally takes the ceiling in seconds if usleep() is missing. * modules/usleep: New file. * m4/usleep.m4 (gl_FUNC_USLEEP): Likewise. * lib/usleep.c (usleep): Likewise. * m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Add defaults. * modules/unistd (Makefile.am): Substitute witnesses. * lib/unistd.in.h (usleep): Add declaration. * doc/pastposix-functions/usleep.texi (usleep): Document this. * MODULES.html.sh (Date and time): Likewise. * modules/usleep-tests (Depends-on): New test. * tests/test-usleep.c: New file. Signed-off-by: Eric Blake <ebb9@byu.net>
@node usleep
@section @code{usleep}
@findex usleep
POSIX specification: @url{http://www.opengroup.org/susv3xsh/usleep.html}
Gnulib module: usleep
Portability problems fixed by Gnulib:
@itemize
@item
On some systems, @code{usleep} rejects attempts to sleep longer than 1
second, as allowed by POSIX:
mingw.
@item
This function is missing on some platforms. However, the replacement
is designed to be lightweight, and may round to the neareset second;
use @code{select} or @code{nanosleep} if better resolution is needed:
IRIX 5.3, Solaris 2.4, older mingw, BeOS.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
According to POSIX, the @code{usleep} function may interfere with the program's
use of the @code{SIGALRM} signal. On Linux, it doesn't; on other platforms,
it may.
@end itemize