This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [PATCH] clock_nanosleep(2)
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin-patches at cygwin dot com
- Date: Wed, 20 Jul 2011 09:56:54 +0200
- Subject: Re: [PATCH] clock_nanosleep(2)
- References: <1311126880.7796.9.camel@YAAKOV04>
- Reply-to: cygwin-patches at cygwin dot com
Hi Yaakov,
On Jul 19 20:54, Yaakov (Cygwin/X) wrote:
> This patchset implements the POSIX clock_nanosleep(2) function:
>
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_nanosleep.html
> http://www.kernel.org/doc/man-pages/online/pages/man2/clock_nanosleep.2.html
>
> In summary, clock_nanosleep(2) replaces nanosleep(2) as the primary
> sleeping function, with all others rewritten in terms of the former. It
> also restores maximum precision to hires_ms::resolution(), saving the
> <5000 100ns check for the one place where resolution is rounded off.
I like this, it's probably not only faster but it makes the code better
readable. But let's talk about the newlib side first.
> Index: libc/include/time.h
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/include/time.h,v
> retrieving revision 1.19
> diff -u -r1.19 time.h
> --- libc/include/time.h 16 Oct 2008 21:53:58 -0000 1.19
> +++ libc/include/time.h 15 May 2011 19:22:48 -0000
> @@ -168,6 +168,9 @@
>
> /* High Resolution Sleep, P1003.1b-1993, p. 269 */
>
> +int _EXFUN(clock_nanosleep,
> + (clockid_t clock_id, int flags, const struct timespec *rqtp,
> + struct timespec *rmtp));
> int _EXFUN(nanosleep, (const struct timespec *rqtp, struct timespec *rmtp));
>
> #ifdef __cplusplus
This doesn't look right. In contrast to nanosleep, clock_nanosleep
is not subsumed under the _POSIX_TIMERS option. In fact it's the only
function under the _POSIX_CLOCK_SELECTION option. So clock_nanosleep
should be guarded independently of _POSIX_TIMERS, kind of like this:
#if defined(_POSIX_CLOCK_SELECTION)
extern "C" {
int _EXFUN(clock_nanosleep, ...
Additionally _POSIX_CLOCK_SELECTION has to be activated in features.h.
Would you mind to send this patch to the newlib list then?
I haven't much time right now. If cgf doesn't beat me to it, I'll
review the function later.
Thanks,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat