From 60fce589e8c4b177ee5025269987476826ab6b0f Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 6 Dec 2004 22:29:01 +0000 Subject: * sysdeps/unix/clock_nanosleep.c (clock_nanosleep): Diagnose EINVAL for CLOCK_THREAD_CPUTIME_ID, not ENOTSUP. Use SYSDEP_NANOSLEEP handler before validating CLOCK_ID value. * rt/tst-timer4.c (TEST_CLOCK, TEST_CLOCK_NANOSLEEP): New macros. Use them throughout in place of CLOCK_REALTIME and nanosleep. (do_test) [TEST_CLOCK_MISSING]: Call this macro and if it returns non-null, punt the test with a message using the string returned. * rt/tst-timer5.c: New file. * rt/Makefile (tests): Add it. --- sysdeps/unix/clock_nanosleep.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'sysdeps/unix') diff --git a/sysdeps/unix/clock_nanosleep.c b/sysdeps/unix/clock_nanosleep.c index 6b170fd..248bfe1 100644 --- a/sysdeps/unix/clock_nanosleep.c +++ b/sysdeps/unix/clock_nanosleep.c @@ -1,5 +1,5 @@ /* High-resolution sleep with the specified clock. - Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -49,16 +49,19 @@ clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, || __builtin_expect (req->tv_nsec, 0) >= 1000000000) return EINVAL; + if (clock_id == CLOCK_THREAD_CPUTIME_ID) + return EINVAL; /* POSIX specifies EINVAL for this case. */ + +#ifdef SYSDEP_NANOSLEEP + SYSDEP_NANOSLEEP; +#endif + if (CPUCLOCK_P (clock_id)) return ENOTSUP; if (INVALID_CLOCK_P (clock_id)) return EINVAL; -#ifdef SYSDEP_NANOSLEEP - SYSDEP_NANOSLEEP; -#endif - /* If we got an absolute time, remap it. */ if (flags == TIMER_ABSTIME) { -- cgit v1.1