public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* Whats up with _POSIX_CPUTIME
@ 2004-11-30 20:16 Steve Munroe
  2004-11-30 20:42 ` Jakub Jelinek
  2004-11-30 22:20 ` Whats up with _POSIX_CPUTIME Roland McGrath
  0 siblings, 2 replies; 12+ messages in thread
From: Steve Munroe @ 2004-11-30 20:16 UTC (permalink / raw)
  To: libc-hacker; +Cc: dgm69

Whats up with _POSIX_CPUTIME and _POSIX_THREAD_CPUTIME?

powerpc/powerpc64 builds are failing because they are undefined. So far 
only i386, ia64, and x86_64 define these in posix_opt.h.

Is these just missing #ifdef or do I need to enable something for powerpc. 
If so is there a pointer to a description of this feature.

Thanks.

Steven J. Munroe
Linux on Power Toolchain Architect
IBM Corporation, Linux Technology Center

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Whats up with _POSIX_CPUTIME
  2004-11-30 20:16 Whats up with _POSIX_CPUTIME Steve Munroe
@ 2004-11-30 20:42 ` Jakub Jelinek
  2004-11-30 22:21   ` Roland McGrath
  2004-11-30 22:20 ` Whats up with _POSIX_CPUTIME Roland McGrath
  1 sibling, 1 reply; 12+ messages in thread
From: Jakub Jelinek @ 2004-11-30 20:42 UTC (permalink / raw)
  To: Steve Munroe; +Cc: libc-hacker, dgm69

On Tue, Nov 30, 2004 at 02:16:08PM -0600, Steve Munroe wrote:
> Whats up with _POSIX_CPUTIME and _POSIX_THREAD_CPUTIME?
> 
> powerpc/powerpc64 builds are failing because they are undefined. So far 
> only i386, ia64, and x86_64 define these in posix_opt.h.
> 
> Is these just missing #ifdef or do I need to enable something for powerpc. 
> If so is there a pointer to a description of this feature.

http://www.opengroup.org/onlinepubs/009695399/basedefs/unistd.h.html
says about these macros that they can be:
1) undefined, then sysconf() can be used to determine whether the option
   is present at runtime, no words about whether the headers/functions/macros/etc.
   are available though
2) defined to -1, then the option is not supported, headers/functions/macros/etc.
   need not be present
3) defined to 0, then headers/functions/macros/etc. must be present, but the
   option is not necessarily supported, so sysconf() should be used to
   detect whether the option is supported at runtime
4) defined to > 0 (200112L) - the option is unconditionally supported

Now, for _POSIX_CPUTIME/_POSIX_THREAD_CPUTIME, we have the
headers/functions/macros/etc. required for these options always present.
On i?86/x86_64/ia64 the option is sometimes supported (so
#define _POSIX_CPUTIME 0 is correct), while on ppc/ppc64/s390/s390x etc.
we don't define it at all.  But 1) is almost like 3) when we have the
headers/data types/functions, so either we can #define these to 0
on all Linux platforms and use some other (not exported) macro to tell
posix-timer.h, timer_*.c etc. whether they should attempt something
or not (this would have 2 advantages, the bigger that we could unify
all the linuxthreads and all the nptl posix_opt.h headers, but also that
e.g. we could decide in the future to use a tick register say on ppc*
on hardware that has it (do I remember well that there is something like
that on some ppc's?) usable without the need to recompile apps to use it,
or we can #define it to -1 to say that it is really not supported.

	Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Whats up with _POSIX_CPUTIME
  2004-11-30 20:16 Whats up with _POSIX_CPUTIME Steve Munroe
  2004-11-30 20:42 ` Jakub Jelinek
@ 2004-11-30 22:20 ` Roland McGrath
  2004-12-01  0:00   ` Steve Munroe
  1 sibling, 1 reply; 12+ messages in thread
From: Roland McGrath @ 2004-11-30 22:20 UTC (permalink / raw)
  To: Steve Munroe; +Cc: libc-hacker, dgm69

> powerpc/powerpc64 builds are failing because they are undefined. So far 
> only i386, ia64, and x86_64 define these in posix_opt.h.

Please elaborate.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Whats up with _POSIX_CPUTIME
  2004-11-30 20:42 ` Jakub Jelinek
@ 2004-11-30 22:21   ` Roland McGrath
  2004-11-30 23:35     ` [PATCH] " Jakub Jelinek
  0 siblings, 1 reply; 12+ messages in thread
From: Roland McGrath @ 2004-11-30 22:21 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Steve Munroe, libc-hacker, dgm69

> 3) defined to 0, then headers/functions/macros/etc. must be present, but the
>    option is not necessarily supported, so sysconf() should be used to
>    detect whether the option is supported at runtime

This is the best plan, I think.  It makes it most straightforward to
introduce new support later and expect that previously compiled (conformant)
applications will automatically start to use it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] Re: Whats up with _POSIX_CPUTIME
  2004-11-30 22:21   ` Roland McGrath
@ 2004-11-30 23:35     ` Jakub Jelinek
  2004-12-01  0:08       ` Roland McGrath
  0 siblings, 1 reply; 12+ messages in thread
From: Jakub Jelinek @ 2004-11-30 23:35 UTC (permalink / raw)
  To: Roland McGrath; +Cc: Steve Munroe, libc-hacker, dgm69

On Tue, Nov 30, 2004 at 02:21:21PM -0800, Roland McGrath wrote:
> > 3) defined to 0, then headers/functions/macros/etc. must be present, but the
> >    option is not necessarily supported, so sysconf() should be used to
> >    detect whether the option is supported at runtime
> 
> This is the best plan, I think.  It makes it most straightforward to
> introduce new support later and expect that previously compiled (conformant)
> applications will automatically start to use it.

Like this?

2004-12-01  Jakub Jelinek  <jakub@redhat.coM.

	* posix/tst-regex.c: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
	conditionals instead of defined _POSIX_CPUTIME.
	(main): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
	option is available.
	* posix/tst-regex.c2: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
	conditionals instead of defined _POSIX_CPUTIME.
	(do_test): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
	option is available.
	* sysdeps/posix/sysconf.c (__sysconf): If _POSIX_CPUTIME resp.
	_POSIX_THREAD_CPUTIME is defined to 0, return -1 for the corresponding
	_SC_ argument.
nptl/
	* sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
	_POSIX_THREAD_CPUTIME): Define to 0.
	* sysdeps/pthread/timer_delete.c: Include <posix-timer.h>
	instead of "posix-timer.h".
	* sysdeps/pthread/timer_gettime.c: Likewise.
	* sysdeps/pthread/timer_getoverr.c: Likewise.
	* sysdeps/pthread/timer_settime.c: Likewise.
	* sysdeps/pthread/timer_create.c: Likewise.  Use
	defined __HAVE_{,THREAD_}CPUTIME instead of
	defined _POSIX_{,THREAD_}CPUTIME && _POSIX_{,THREAD_}CPUTIME >= 0
	conditionals.
	* sysdeps/pthread/timer_routines.c: Likewise.
	* sysdeps/pthread/posix-timer.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/i386/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/ia64/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/posix-timer.h: New file.
linuxthreads/
	* sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
	_POSIX_THREAD_CPUTIME): Define to 0.
	* sysdeps/pthread/timer_delete.c: Include <posix-timer.h>
	instead of "posix-timer.h".
	* sysdeps/pthread/timer_gettime.c: Likewise.
	* sysdeps/pthread/timer_getoverr.c: Likewise.
	* sysdeps/pthread/timer_settime.c: Likewise.
	* sysdeps/pthread/timer_create.c: Likewise.  Use
	defined __HAVE_{,THREAD_}CPUTIME instead of
	defined _POSIX_{,THREAD_}CPUTIME && _POSIX_{,THREAD_}CPUTIME >= 0
	conditionals.
	* sysdeps/pthread/timer_routines.c: Likewise.
	* sysdeps/pthread/posix-timer.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/i386/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/ia64/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/posix-timer.h: New file.

--- libc/posix/tst-regex.c.jj	2003-11-29 10:14:14.000000000 +0100
+++ libc/posix/tst-regex.c	2004-11-30 23:56:39.287251722 +0100
@@ -37,7 +37,7 @@
 #include <regex.h>
 
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
 static clockid_t cl;
 static int use_clock;
 #endif
@@ -118,9 +118,14 @@ main (int argc, char *argv[])
   if (inlen != 0)
     error (EXIT_FAILURE, errno, "cannot convert buffer");
 
-#ifdef _POSIX_CPUTIME
-  /* See whether we can use the CPU clock.  */
-  use_clock = clock_getcpuclockid (0, &cl) == 0;
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+# if _POSIX_CPUTIME == 0
+  if (sysconf (_SC_CPUTIME) < 0)
+    use_clock = 0;
+  else
+# endif
+    /* See whether we can use the CPU clock.  */
+    use_clock = clock_getcpuclockid (0, &cl) == 0;
 #endif
 
 #ifdef DEBUG
@@ -202,7 +207,7 @@ static int
 run_test (const char *expr, const char *mem, size_t memlen, int icase,
 	  int expected)
 {
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   struct timespec start;
   struct timespec finish;
 #endif
@@ -211,7 +216,7 @@ run_test (const char *expr, const char *
   size_t offset;
   int cnt;
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     use_clock = clock_gettime (cl, &start) == 0;
 #endif
@@ -260,7 +265,7 @@ run_test (const char *expr, const char *
 
   regfree (&re);
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     {
       use_clock = clock_gettime (cl, &finish) == 0;
@@ -345,7 +350,7 @@ static int
 run_test_backwards (const char *expr, const char *mem, size_t memlen,
 		    int icase, int expected)
 {
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   struct timespec start;
   struct timespec finish;
 #endif
@@ -354,7 +359,7 @@ run_test_backwards (const char *expr, co
   size_t offset;
   int cnt;
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     use_clock = clock_gettime (cl, &start) == 0;
 #endif
@@ -406,7 +411,7 @@ run_test_backwards (const char *expr, co
 
   regfree (&re);
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     {
       use_clock = clock_gettime (cl, &finish) == 0;
--- libc/posix/tst-regex2.c.jj	2004-11-19 00:55:41.000000000 +0100
+++ libc/posix/tst-regex2.c	2004-11-30 23:56:56.975105445 +0100
@@ -8,7 +8,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#ifdef _POSIX_CPUTIME
+#if #defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
 static clockid_t cl;
 static int use_clock;
 #endif
@@ -16,9 +16,14 @@ static int use_clock;
 static int
 do_test (void)
 {
-#ifdef _POSIX_CPUTIME
-  /* See whether we can use the CPU clock.  */
-  use_clock = clock_getcpuclockid (0, &cl) == 0;
+#if #defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+# if _POSIX_CPUTIME == 0
+  if (sysconf (_SC_CPUTIME) < 0)
+    use_clock = 0;
+  else
+# endif
+    /* See whether we can use the CPU clock.  */
+    use_clock = clock_getcpuclockid (0, &cl) == 0;
 #endif
 
   static const char *pat[] = {
@@ -112,7 +117,7 @@ do_test (void)
 	      rpbuf.no_sub = 1;
 	  }
 
-#ifdef _POSIX_CPUTIME
+#if #defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
       struct timespec start, stop;
       if (use_clock)
 	use_clock = clock_gettime (cl, &start) == 0;
@@ -211,7 +216,7 @@ do_test (void)
 	    }
 	}
 
-#ifdef _POSIX_CPUTIME
+#if #defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
       if (use_clock)
 	use_clock = clock_gettime (cl, &stop) == 0;
       if (use_clock)
--- libc/sysdeps/posix/sysconf.c.jj	2004-11-28 17:36:05.000000000 +0100
+++ libc/sysdeps/posix/sysconf.c	2004-11-30 23:44:26.530595106 +0100
@@ -890,7 +890,7 @@ __sysconf (name)
 #endif
 
     case _SC_CPUTIME:
-#ifdef _POSIX_CPUTIME
+#if _POSIX_CPUTIME > 0
       return _POSIX_CPUTIME;
 #else
       return -1;
@@ -1055,7 +1055,7 @@ __sysconf (name)
 #endif
 
     case _SC_THREAD_CPUTIME:
-#ifdef _POSIX_THREAD_CPUTIME
+#if _POSIX_THREAD_CPUTIME > 0
       return _POSIX_THREAD_CPUTIME;
 #else
       return -1;
--- libc/nptl/sysdeps/unix/sysv/linux/i386/posix-timer.h.jj	2004-12-01 00:14:31.452526389 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/i386/posix-timer.h	2004-12-01 00:14:26.287445202 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h	2004-12-01 00:03:11.996397050 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h	2004-12-01 00:02:49.000000000 +0100
@@ -104,6 +104,12 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	200112L
 
+/* CPU-time clocks support needs to be checked at runtime.  */
+#define _POSIX_CPUTIME	0
+
+/* Clock support in threads must be also checked at runtime.  */
+#define _POSIX_THREAD_CPUTIME	0
+
 /* GNU libc provides regular expression handling.  */
 #define _POSIX_REGEXP	1
 
--- libc/nptl/sysdeps/unix/sysv/linux/ia64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/ia64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h	2004-12-01 00:03:21.276746100 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/unix/sysv/linux/x86_64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h	2004-12-01 00:03:30.401122899 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/pthread/timer_routines.c.jj	2004-10-05 09:04:47.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_routines.c	2004-12-01 00:18:04.530622362 +0100
@@ -29,7 +29,7 @@
 #include <unistd.h>
 #include <sys/syscall.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 #include <pthreadP.h>
 
 
@@ -53,10 +53,10 @@ int __timer_init_failed;
 
 /* Node for the thread used to deliver signals.  */
 struct thread_node __timer_signal_thread_rclk;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
 struct thread_node __timer_signal_thread_pclk;
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
 struct thread_node __timer_signal_thread_tclk;
 #endif
 
@@ -191,10 +191,10 @@ init_module (void)
     list_append (&thread_free_list, &thread_array[i].links);
 
   thread_init (&__timer_signal_thread_rclk, 0, CLOCK_REALTIME);
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
   thread_init (&__timer_signal_thread_pclk, 0, CLOCK_PROCESS_CPUTIME_ID);
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
   thread_init (&__timer_signal_thread_tclk, 0, CLOCK_THREAD_CPUTIME_ID);
 #endif
 }
@@ -281,10 +281,10 @@ thread_cleanup (void *val)
 
       /* How did the signal thread get killed?  */
       assert (thread != &__timer_signal_thread_rclk);
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
       assert (thread != &__timer_signal_thread_pclk);
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
       assert (thread != &__timer_signal_thread_tclk);
 #endif
 
--- libc/nptl/sysdeps/pthread/timer_delete.c.jj	2002-11-26 23:50:32.000000000 +0100
+++ libc/nptl/sysdeps/pthread/timer_delete.c	2004-12-01 00:10:40.791558810 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -22,7 +22,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Delete timer TIMERID.  */
--- libc/nptl/sysdeps/pthread/posix-timer.h.jj	2004-10-05 09:04:47.000000000 +0200
+++ libc/nptl/sysdeps/pthread/posix-timer.h	2004-12-01 00:15:05.788418412 +0100
@@ -92,10 +92,10 @@ extern int __timer_init_failed;
 /* A distinct thread is used for each clock type.  */
 
 extern struct thread_node __timer_signal_thread_rclk;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
 extern struct thread_node __timer_signal_thread_pclk;
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
 extern struct thread_node __timer_signal_thread_tclk;
 #endif
 
--- libc/nptl/sysdeps/pthread/timer_gettime.c.jj	2004-04-21 10:06:05.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_gettime.c	2004-12-01 00:10:24.690423073 +0100
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get current value of timer TIMERID and store it in VLAUE.  */
--- libc/nptl/sysdeps/pthread/timer_getoverr.c.jj	2002-11-26 23:50:32.000000000 +0100
+++ libc/nptl/sysdeps/pthread/timer_getoverr.c	2004-12-01 00:10:47.826307385 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get expiration overrun for timer TIMERID.  */
--- libc/nptl/sysdeps/pthread/timer_create.c.jj	2004-10-05 19:45:02.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_create.c	2004-12-01 00:15:58.293078441 +0100
@@ -23,7 +23,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Create new per-process timer using CLOCK.  */
@@ -38,10 +38,10 @@ timer_create (clock_id, evp, timerid)
   struct thread_node *thread = NULL;
 
   if (0
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
       || clock_id == CLOCK_PROCESS_CPUTIME_ID
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
       || clock_id == CLOCK_THREAD_CPUTIME_ID
 #endif
       )
@@ -100,12 +100,12 @@ timer_create (clock_id, evp, timerid)
 	default:
 	  thread = &__timer_signal_thread_rclk;
 	  break;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
 	case CLOCK_PROCESS_CPUTIME_ID:
 	  thread = &__timer_signal_thread_pclk;
 	  break;
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
 	case CLOCK_THREAD_CPUTIME_ID:
 	  thread = &__timer_signal_thread_tclk;
 	  break;
--- libc/nptl/sysdeps/pthread/timer_settime.c.jj	2002-11-26 23:50:33.000000000 +0100
+++ libc/nptl/sysdeps/pthread/timer_settime.c	2004-12-01 00:11:05.632139874 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/i386/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/i386/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h.jj	2004-11-28 17:37:40.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h	2004-12-01 00:01:34.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/ix86.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h.jj	2004-11-28 17:37:40.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h	2004-12-01 00:01:25.000000000 +0100
@@ -1,4 +1,4 @@
-/* Define POSIX options for Linux.
+/* Define POSIX options for Linux/ix86.
    Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -107,6 +107,12 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	200112L
 
+/* CPU-time clocks support needs to be checked at runtime.  */
+#define _POSIX_CPUTIME	0
+
+/* Clock support in threads must be also checked at runtime.  */
+#define _POSIX_THREAD_CPUTIME	0
+
 /* GNU libc provides regular expression handling.  */
 #define _POSIX_REGEXP	1
 
--- libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h	2004-12-01 00:02:03.056660730 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/ia64.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h	2004-12-01 00:02:14.592608771 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/x86_64.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/pthread/timer_routines.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_routines.c	2004-12-01 00:20:08.551559883 +0100
@@ -29,7 +29,7 @@
 #include <unistd.h>
 #include <sys/syscall.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Number of threads used.  */
@@ -52,10 +52,10 @@ int __timer_init_failed;
 
 /* Node for the thread used to deliver signals.  */
 struct thread_node __timer_signal_thread_rclk;
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
 struct thread_node __timer_signal_thread_pclk;
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
 struct thread_node __timer_signal_thread_tclk;
 #endif
 
@@ -190,10 +190,10 @@ init_module (void)
     list_append (&thread_free_list, &thread_array[i].links);
 
   thread_init (&__timer_signal_thread_rclk, 0, CLOCK_REALTIME);
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
   thread_init (&__timer_signal_thread_pclk, 0, CLOCK_PROCESS_CPUTIME_ID);
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
   thread_init (&__timer_signal_thread_tclk, 0, CLOCK_THREAD_CPUTIME_ID);
 #endif
 }
@@ -280,10 +280,10 @@ thread_cleanup (void *val)
 
       /* How did the signal thread get killed?  */
       assert (thread != &__timer_signal_thread_rclk);
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
       assert (thread != &__timer_signal_thread_pclk);
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
       assert (thread != &__timer_signal_thread_tclk);
 #endif
 
--- libc/linuxthreads/sysdeps/pthread/timer_delete.c.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_delete.c	2004-12-01 00:19:27.068939918 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -22,7 +22,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Delete timer TIMERID.  */
--- libc/linuxthreads/sysdeps/pthread/posix-timer.h.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/posix-timer.h	2004-12-01 00:21:06.899179291 +0100
@@ -1,5 +1,5 @@
 /* Definitions for POSIX timer implementation on top of LinuxThreads.
-   Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -85,10 +85,10 @@ extern int __timer_init_failed;
 /* A distinct thread is used for each clock type.  */
 
 extern struct thread_node __timer_signal_thread_rclk;
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
 extern struct thread_node __timer_signal_thread_pclk;
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
 extern struct thread_node __timer_signal_thread_tclk;
 #endif
 
--- libc/linuxthreads/sysdeps/pthread/timer_gettime.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_gettime.c	2004-12-01 00:18:33.819412276 +0100
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get current value of timer TIMERID and store it in VLAUE.  */
--- libc/linuxthreads/sysdeps/pthread/timer_getoverr.c.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_getoverr.c	2004-12-01 00:19:33.837735824 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get expiration overrun for timer TIMERID.  */
--- libc/linuxthreads/sysdeps/pthread/timer_create.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_create.c	2004-12-01 00:19:02.949230479 +0100
@@ -23,7 +23,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Create new per-process timer using CLOCK.  */
@@ -38,10 +38,10 @@ timer_create (clock_id, evp, timerid)
   struct thread_node *thread = NULL;
 
   if (0
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
       || clock_id == CLOCK_PROCESS_CPUTIME_ID
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
       || clock_id == CLOCK_THREAD_CPUTIME_ID
 #endif
       )
@@ -100,12 +100,12 @@ timer_create (clock_id, evp, timerid)
 	default:
 	  thread = &__timer_signal_thread_rclk;
 	  break;
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
 	case CLOCK_PROCESS_CPUTIME_ID:
 	  thread = &__timer_signal_thread_pclk;
 	  break;
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
 	case CLOCK_THREAD_CPUTIME_ID:
 	  thread = &__timer_signal_thread_tclk;
 	  break;
--- libc/linuxthreads/sysdeps/pthread/timer_settime.c.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_settime.c	2004-12-01 00:20:15.683291078 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
--- libc/linuxthreads/tst-clock1.c.jj	2004-07-09 01:44:50.000000000 +0200
+++ libc/linuxthreads/tst-clock1.c	2004-11-30 23:59:30.118864675 +0100
@@ -25,7 +25,7 @@
 #include <unistd.h>
 
 
-#if _POSIX_THREAD_CPUTIME
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
 static pthread_barrier_t b2;
 static pthread_barrier_t bN;
 
@@ -55,9 +55,17 @@ tf (void *arg)
 int
 do_test (void)
 {
-#if _POSIX_THREAD_CPUTIME
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
 # define N 10
 
+# if _POSIX_THREAD_CPUTIME == 0
+  if (sysconf (_SC_THREAD_CPUTIME) < 0)
+    {
+      puts ("_POSIX_THREAD_CPUTIME option not available");
+      return 0;
+    }
+# endif
+
   if (pthread_barrier_init (&b2, NULL, 2) != 0
       || pthread_barrier_init (&bN, NULL, N + 1) != 0)
     {


	Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Whats up with _POSIX_CPUTIME
  2004-11-30 22:20 ` Whats up with _POSIX_CPUTIME Roland McGrath
@ 2004-12-01  0:00   ` Steve Munroe
  0 siblings, 0 replies; 12+ messages in thread
From: Steve Munroe @ 2004-12-01  0:00 UTC (permalink / raw)
  To: Roland McGrath; +Cc: dgm69, libc-hacker

Roland McGrath <roland@redhat.com> wrote on 11/30/2004 04:20:37 PM:

> > powerpc/powerpc64 builds are failing because they are undefined. So 
far 
> > only i386, ia64, and x86_64 define these in posix_opt.h.
> 
> Please elaborate.
> 

posix/tst-sysconf.c assumes that _POSIX_CPUTIME and _POSIX_THREAD_CPUTIME 
are defined for posix_options. 

Steven J. Munroe
Linux on Power Toolchain Architect
IBM Corporation, Linux Technology Center

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Re: Whats up with _POSIX_CPUTIME
  2004-11-30 23:35     ` [PATCH] " Jakub Jelinek
@ 2004-12-01  0:08       ` Roland McGrath
  2004-12-01 10:42         ` Jakub Jelinek
  0 siblings, 1 reply; 12+ messages in thread
From: Roland McGrath @ 2004-12-01  0:08 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Steve Munroe, libc-hacker, dgm69

> Like this?

Yeah, but a tested version with the typo's removed. :-)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Re: Whats up with _POSIX_CPUTIME
  2004-12-01  0:08       ` Roland McGrath
@ 2004-12-01 10:42         ` Jakub Jelinek
  2004-12-01 20:00           ` Roland McGrath
  0 siblings, 1 reply; 12+ messages in thread
From: Jakub Jelinek @ 2004-12-01 10:42 UTC (permalink / raw)
  To: Roland McGrath; +Cc: Steve Munroe, libc-hacker, dgm69

On Tue, Nov 30, 2004 at 04:08:33PM -0800, Roland McGrath wrote:
> > Like this?
> 
> Yeah, but a tested version with the typo's removed. :-)

Did you just mean the s/#if #defined/#if defined/ in posix/tst-regex2.c?
That's the only thing I found during testing...

2004-12-01  Jakub Jelinek  <jakub@redhat.coM.

	* posix/tst-regex.c: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
	conditionals instead of defined _POSIX_CPUTIME.
	(main): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
	option is available.
	* posix/tst-regex.c2: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
	conditionals instead of defined _POSIX_CPUTIME.
	(do_test): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
	option is available.
	* sysdeps/posix/sysconf.c (__sysconf): If _POSIX_CPUTIME resp.
	_POSIX_THREAD_CPUTIME is defined to 0, return -1 for the corresponding
	_SC_ argument.
nptl/
	* sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
	_POSIX_THREAD_CPUTIME): Define to 0.
	* sysdeps/pthread/timer_delete.c: Include <posix-timer.h>
	instead of "posix-timer.h".
	* sysdeps/pthread/timer_gettime.c: Likewise.
	* sysdeps/pthread/timer_getoverr.c: Likewise.
	* sysdeps/pthread/timer_settime.c: Likewise.
	* sysdeps/pthread/timer_create.c: Likewise.  Use
	defined __HAVE_{,THREAD_}CPUTIME instead of
	defined _POSIX_{,THREAD_}CPUTIME && _POSIX_{,THREAD_}CPUTIME >= 0
	conditionals.
	* sysdeps/pthread/timer_routines.c: Likewise.
	* sysdeps/pthread/posix-timer.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/i386/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/ia64/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/posix-timer.h: New file.
linuxthreads/
	* sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
	_POSIX_THREAD_CPUTIME): Define to 0.
	* sysdeps/pthread/timer_delete.c: Include <posix-timer.h>
	instead of "posix-timer.h".
	* sysdeps/pthread/timer_gettime.c: Likewise.
	* sysdeps/pthread/timer_getoverr.c: Likewise.
	* sysdeps/pthread/timer_settime.c: Likewise.
	* sysdeps/pthread/timer_create.c: Likewise.  Use
	defined __HAVE_{,THREAD_}CPUTIME instead of
	defined _POSIX_{,THREAD_}CPUTIME && _POSIX_{,THREAD_}CPUTIME >= 0
	conditionals.
	* sysdeps/pthread/timer_routines.c: Likewise.
	* sysdeps/pthread/posix-timer.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/i386/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/ia64/posix-timer.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/posix-timer.h: New file.

--- libc/posix/tst-regex.c.jj	2003-11-29 10:14:14.000000000 +0100
+++ libc/posix/tst-regex.c	2004-11-30 23:56:39.000000000 +0100
@@ -37,7 +37,7 @@
 #include <regex.h>
 
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
 static clockid_t cl;
 static int use_clock;
 #endif
@@ -118,9 +118,14 @@ main (int argc, char *argv[])
   if (inlen != 0)
     error (EXIT_FAILURE, errno, "cannot convert buffer");
 
-#ifdef _POSIX_CPUTIME
-  /* See whether we can use the CPU clock.  */
-  use_clock = clock_getcpuclockid (0, &cl) == 0;
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+# if _POSIX_CPUTIME == 0
+  if (sysconf (_SC_CPUTIME) < 0)
+    use_clock = 0;
+  else
+# endif
+    /* See whether we can use the CPU clock.  */
+    use_clock = clock_getcpuclockid (0, &cl) == 0;
 #endif
 
 #ifdef DEBUG
@@ -202,7 +207,7 @@ static int
 run_test (const char *expr, const char *mem, size_t memlen, int icase,
 	  int expected)
 {
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   struct timespec start;
   struct timespec finish;
 #endif
@@ -211,7 +216,7 @@ run_test (const char *expr, const char *
   size_t offset;
   int cnt;
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     use_clock = clock_gettime (cl, &start) == 0;
 #endif
@@ -260,7 +265,7 @@ run_test (const char *expr, const char *
 
   regfree (&re);
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     {
       use_clock = clock_gettime (cl, &finish) == 0;
@@ -345,7 +350,7 @@ static int
 run_test_backwards (const char *expr, const char *mem, size_t memlen,
 		    int icase, int expected)
 {
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   struct timespec start;
   struct timespec finish;
 #endif
@@ -354,7 +359,7 @@ run_test_backwards (const char *expr, co
   size_t offset;
   int cnt;
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     use_clock = clock_gettime (cl, &start) == 0;
 #endif
@@ -406,7 +411,7 @@ run_test_backwards (const char *expr, co
 
   regfree (&re);
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     {
       use_clock = clock_gettime (cl, &finish) == 0;
--- libc/posix/tst-regex2.c.jj	2004-11-19 00:55:41.000000000 +0100
+++ libc/posix/tst-regex2.c	2004-12-01 10:50:35.811407309 +0100
@@ -8,7 +8,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
 static clockid_t cl;
 static int use_clock;
 #endif
@@ -16,9 +16,14 @@ static int use_clock;
 static int
 do_test (void)
 {
-#ifdef _POSIX_CPUTIME
-  /* See whether we can use the CPU clock.  */
-  use_clock = clock_getcpuclockid (0, &cl) == 0;
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+# if _POSIX_CPUTIME == 0
+  if (sysconf (_SC_CPUTIME) < 0)
+    use_clock = 0;
+  else
+# endif
+    /* See whether we can use the CPU clock.  */
+    use_clock = clock_getcpuclockid (0, &cl) == 0;
 #endif
 
   static const char *pat[] = {
@@ -112,7 +117,7 @@ do_test (void)
 	      rpbuf.no_sub = 1;
 	  }
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
       struct timespec start, stop;
       if (use_clock)
 	use_clock = clock_gettime (cl, &start) == 0;
@@ -211,7 +216,7 @@ do_test (void)
 	    }
 	}
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
       if (use_clock)
 	use_clock = clock_gettime (cl, &stop) == 0;
       if (use_clock)
--- libc/sysdeps/posix/sysconf.c.jj	2004-11-28 17:36:05.000000000 +0100
+++ libc/sysdeps/posix/sysconf.c	2004-11-30 23:44:26.000000000 +0100
@@ -890,7 +890,7 @@ __sysconf (name)
 #endif
 
     case _SC_CPUTIME:
-#ifdef _POSIX_CPUTIME
+#if _POSIX_CPUTIME > 0
       return _POSIX_CPUTIME;
 #else
       return -1;
@@ -1055,7 +1055,7 @@ __sysconf (name)
 #endif
 
     case _SC_THREAD_CPUTIME:
-#ifdef _POSIX_THREAD_CPUTIME
+#if _POSIX_THREAD_CPUTIME > 0
       return _POSIX_THREAD_CPUTIME;
 #else
       return -1;
--- libc/nptl/sysdeps/unix/sysv/linux/i386/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/i386/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h	2004-12-01 00:03:11.000000000 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h	2004-12-01 00:02:49.000000000 +0100
@@ -104,6 +104,12 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	200112L
 
+/* CPU-time clocks support needs to be checked at runtime.  */
+#define _POSIX_CPUTIME	0
+
+/* Clock support in threads must be also checked at runtime.  */
+#define _POSIX_THREAD_CPUTIME	0
+
 /* GNU libc provides regular expression handling.  */
 #define _POSIX_REGEXP	1
 
--- libc/nptl/sysdeps/unix/sysv/linux/ia64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/ia64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h	2004-12-01 00:03:21.000000000 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/unix/sysv/linux/x86_64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h	2004-12-01 00:03:30.000000000 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/pthread/timer_routines.c.jj	2004-10-05 09:04:47.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_routines.c	2004-12-01 00:18:04.000000000 +0100
@@ -29,7 +29,7 @@
 #include <unistd.h>
 #include <sys/syscall.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 #include <pthreadP.h>
 
 
@@ -53,10 +53,10 @@ int __timer_init_failed;
 
 /* Node for the thread used to deliver signals.  */
 struct thread_node __timer_signal_thread_rclk;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
 struct thread_node __timer_signal_thread_pclk;
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
 struct thread_node __timer_signal_thread_tclk;
 #endif
 
@@ -191,10 +191,10 @@ init_module (void)
     list_append (&thread_free_list, &thread_array[i].links);
 
   thread_init (&__timer_signal_thread_rclk, 0, CLOCK_REALTIME);
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
   thread_init (&__timer_signal_thread_pclk, 0, CLOCK_PROCESS_CPUTIME_ID);
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
   thread_init (&__timer_signal_thread_tclk, 0, CLOCK_THREAD_CPUTIME_ID);
 #endif
 }
@@ -281,10 +281,10 @@ thread_cleanup (void *val)
 
       /* How did the signal thread get killed?  */
       assert (thread != &__timer_signal_thread_rclk);
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
       assert (thread != &__timer_signal_thread_pclk);
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
       assert (thread != &__timer_signal_thread_tclk);
 #endif
 
--- libc/nptl/sysdeps/pthread/timer_delete.c.jj	2002-11-26 23:50:32.000000000 +0100
+++ libc/nptl/sysdeps/pthread/timer_delete.c	2004-12-01 00:10:40.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -22,7 +22,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Delete timer TIMERID.  */
--- libc/nptl/sysdeps/pthread/posix-timer.h.jj	2004-10-05 09:04:47.000000000 +0200
+++ libc/nptl/sysdeps/pthread/posix-timer.h	2004-12-01 00:15:05.000000000 +0100
@@ -92,10 +92,10 @@ extern int __timer_init_failed;
 /* A distinct thread is used for each clock type.  */
 
 extern struct thread_node __timer_signal_thread_rclk;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
 extern struct thread_node __timer_signal_thread_pclk;
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
 extern struct thread_node __timer_signal_thread_tclk;
 #endif
 
--- libc/nptl/sysdeps/pthread/timer_gettime.c.jj	2004-04-21 10:06:05.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_gettime.c	2004-12-01 00:10:24.000000000 +0100
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get current value of timer TIMERID and store it in VLAUE.  */
--- libc/nptl/sysdeps/pthread/timer_getoverr.c.jj	2002-11-26 23:50:32.000000000 +0100
+++ libc/nptl/sysdeps/pthread/timer_getoverr.c	2004-12-01 00:10:47.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get expiration overrun for timer TIMERID.  */
--- libc/nptl/sysdeps/pthread/timer_create.c.jj	2004-10-05 19:45:02.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_create.c	2004-12-01 00:15:58.000000000 +0100
@@ -23,7 +23,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Create new per-process timer using CLOCK.  */
@@ -38,10 +38,10 @@ timer_create (clock_id, evp, timerid)
   struct thread_node *thread = NULL;
 
   if (0
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
       || clock_id == CLOCK_PROCESS_CPUTIME_ID
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
       || clock_id == CLOCK_THREAD_CPUTIME_ID
 #endif
       )
@@ -100,12 +100,12 @@ timer_create (clock_id, evp, timerid)
 	default:
 	  thread = &__timer_signal_thread_rclk;
 	  break;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+#ifdef __HAVE_CPUTIME
 	case CLOCK_PROCESS_CPUTIME_ID:
 	  thread = &__timer_signal_thread_pclk;
 	  break;
 #endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
+#ifdef __HAVE_THREAD_CPUTIME
 	case CLOCK_THREAD_CPUTIME_ID:
 	  thread = &__timer_signal_thread_tclk;
 	  break;
--- libc/nptl/sysdeps/pthread/timer_settime.c.jj	2002-11-26 23:50:33.000000000 +0100
+++ libc/nptl/sysdeps/pthread/timer_settime.c	2004-12-01 00:11:05.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/i386/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/i386/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h.jj	2004-11-28 17:37:40.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h	2004-12-01 00:01:34.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/ix86.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h.jj	2004-11-28 17:37:40.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h	2004-12-01 00:01:25.000000000 +0100
@@ -1,4 +1,4 @@
-/* Define POSIX options for Linux.
+/* Define POSIX options for Linux/ix86.
    Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -107,6 +107,12 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	200112L
 
+/* CPU-time clocks support needs to be checked at runtime.  */
+#define _POSIX_CPUTIME	0
+
+/* Clock support in threads must be also checked at runtime.  */
+#define _POSIX_THREAD_CPUTIME	0
+
 /* GNU libc provides regular expression handling.  */
 #define _POSIX_REGEXP	1
 
--- libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h	2004-12-01 00:02:03.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/ia64.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/posix-timer.h.jj	2004-12-01 00:14:31.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/posix-timer.h	2004-12-01 00:14:26.000000000 +0100
@@ -0,0 +1,3 @@
+#define __HAVE_CPUTIME		1
+#define __HAVE_THREAD_CPUTIME	1
+#include_next <posix-timer.h>
--- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h	2004-12-01 00:02:14.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/x86_64.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/pthread/timer_routines.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_routines.c	2004-12-01 00:20:08.000000000 +0100
@@ -29,7 +29,7 @@
 #include <unistd.h>
 #include <sys/syscall.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Number of threads used.  */
@@ -52,10 +52,10 @@ int __timer_init_failed;
 
 /* Node for the thread used to deliver signals.  */
 struct thread_node __timer_signal_thread_rclk;
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
 struct thread_node __timer_signal_thread_pclk;
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
 struct thread_node __timer_signal_thread_tclk;
 #endif
 
@@ -190,10 +190,10 @@ init_module (void)
     list_append (&thread_free_list, &thread_array[i].links);
 
   thread_init (&__timer_signal_thread_rclk, 0, CLOCK_REALTIME);
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
   thread_init (&__timer_signal_thread_pclk, 0, CLOCK_PROCESS_CPUTIME_ID);
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
   thread_init (&__timer_signal_thread_tclk, 0, CLOCK_THREAD_CPUTIME_ID);
 #endif
 }
@@ -280,10 +280,10 @@ thread_cleanup (void *val)
 
       /* How did the signal thread get killed?  */
       assert (thread != &__timer_signal_thread_rclk);
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
       assert (thread != &__timer_signal_thread_pclk);
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
       assert (thread != &__timer_signal_thread_tclk);
 #endif
 
--- libc/linuxthreads/sysdeps/pthread/timer_delete.c.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_delete.c	2004-12-01 00:19:27.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -22,7 +22,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Delete timer TIMERID.  */
--- libc/linuxthreads/sysdeps/pthread/posix-timer.h.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/posix-timer.h	2004-12-01 00:21:06.000000000 +0100
@@ -1,5 +1,5 @@
 /* Definitions for POSIX timer implementation on top of LinuxThreads.
-   Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -85,10 +85,10 @@ extern int __timer_init_failed;
 /* A distinct thread is used for each clock type.  */
 
 extern struct thread_node __timer_signal_thread_rclk;
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
 extern struct thread_node __timer_signal_thread_pclk;
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
 extern struct thread_node __timer_signal_thread_tclk;
 #endif
 
--- libc/linuxthreads/sysdeps/pthread/timer_gettime.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_gettime.c	2004-12-01 00:18:33.000000000 +0100
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get current value of timer TIMERID and store it in VLAUE.  */
--- libc/linuxthreads/sysdeps/pthread/timer_getoverr.c.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_getoverr.c	2004-12-01 00:19:33.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Get expiration overrun for timer TIMERID.  */
--- libc/linuxthreads/sysdeps/pthread/timer_create.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_create.c	2004-12-01 00:19:02.000000000 +0100
@@ -23,7 +23,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Create new per-process timer using CLOCK.  */
@@ -38,10 +38,10 @@ timer_create (clock_id, evp, timerid)
   struct thread_node *thread = NULL;
 
   if (0
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
       || clock_id == CLOCK_PROCESS_CPUTIME_ID
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
       || clock_id == CLOCK_THREAD_CPUTIME_ID
 #endif
       )
@@ -100,12 +100,12 @@ timer_create (clock_id, evp, timerid)
 	default:
 	  thread = &__timer_signal_thread_rclk;
 	  break;
-#ifdef _POSIX_CPUTIME
+#ifdef __HAVE_CPUTIME
 	case CLOCK_PROCESS_CPUTIME_ID:
 	  thread = &__timer_signal_thread_pclk;
 	  break;
 #endif
-#ifdef _POSIX_THREAD_CPUTIME
+#ifdef __HAVE_THREAD_CPUTIME
 	case CLOCK_THREAD_CPUTIME_ID:
 	  thread = &__timer_signal_thread_tclk;
 	  break;
--- libc/linuxthreads/sysdeps/pthread/timer_settime.c.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_settime.c	2004-12-01 00:20:15.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -21,7 +21,7 @@
 #include <pthread.h>
 #include <time.h>
 
-#include "posix-timer.h"
+#include <posix-timer.h>
 
 
 /* Set timer TIMERID to VALUE, returning old value in OVLAUE.  */
--- libc/linuxthreads/tst-clock1.c.jj	2004-07-09 01:44:50.000000000 +0200
+++ libc/linuxthreads/tst-clock1.c	2004-11-30 23:59:30.000000000 +0100
@@ -25,7 +25,7 @@
 #include <unistd.h>
 
 
-#if _POSIX_THREAD_CPUTIME
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
 static pthread_barrier_t b2;
 static pthread_barrier_t bN;
 
@@ -55,9 +55,17 @@ tf (void *arg)
 int
 do_test (void)
 {
-#if _POSIX_THREAD_CPUTIME
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
 # define N 10
 
+# if _POSIX_THREAD_CPUTIME == 0
+  if (sysconf (_SC_THREAD_CPUTIME) < 0)
+    {
+      puts ("_POSIX_THREAD_CPUTIME option not available");
+      return 0;
+    }
+# endif
+
   if (pthread_barrier_init (&b2, NULL, 2) != 0
       || pthread_barrier_init (&bN, NULL, N + 1) != 0)
     {


	Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Re: Whats up with _POSIX_CPUTIME
  2004-12-01 10:42         ` Jakub Jelinek
@ 2004-12-01 20:00           ` Roland McGrath
  2004-12-01 20:20             ` Jakub Jelinek
  0 siblings, 1 reply; 12+ messages in thread
From: Roland McGrath @ 2004-12-01 20:00 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Steve Munroe, libc-hacker, dgm69

> Did you just mean the s/#if #defined/#if defined/ in posix/tst-regex2.c?
> That's the only thing I found during testing...

That's the only thing I noticed, but it indicated the patch wasn't tested.

I don't like the __HAVE_CPUTIME stuff.  Already on ia64 it is a runtime
determination if the clocks are available.  

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Re: Whats up with _POSIX_CPUTIME
  2004-12-01 20:00           ` Roland McGrath
@ 2004-12-01 20:20             ` Jakub Jelinek
  2004-12-01 20:22               ` Roland McGrath
  0 siblings, 1 reply; 12+ messages in thread
From: Jakub Jelinek @ 2004-12-01 20:20 UTC (permalink / raw)
  To: Roland McGrath; +Cc: Steve Munroe, libc-hacker, dgm69

On Wed, Dec 01, 2004 at 12:00:06PM -0800, Roland McGrath wrote:
> > Did you just mean the s/#if #defined/#if defined/ in posix/tst-regex2.c?
> > That's the only thing I found during testing...
> 
> That's the only thing I noticed, but it indicated the patch wasn't tested.
> 
> I don't like the __HAVE_CPUTIME stuff.  Already on ia64 it is a runtime
> determination if the clocks are available.  

So should I redo that just to call __sysconf (_SC_{THREAD_,}CPUTIME)?

	Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Re: Whats up with _POSIX_CPUTIME
  2004-12-01 20:20             ` Jakub Jelinek
@ 2004-12-01 20:22               ` Roland McGrath
  2004-12-01 21:11                 ` [PATCH] Re: Whats up with _POSIX_CPUTIME (take 2) Jakub Jelinek
  0 siblings, 1 reply; 12+ messages in thread
From: Roland McGrath @ 2004-12-01 20:22 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Steve Munroe, libc-hacker, dgm69

> On Wed, Dec 01, 2004 at 12:00:06PM -0800, Roland McGrath wrote:
> > > Did you just mean the s/#if #defined/#if defined/ in posix/tst-regex2.c?
> > > That's the only thing I found during testing...
> > 
> > That's the only thing I noticed, but it indicated the patch wasn't tested.
> > 
> > I don't like the __HAVE_CPUTIME stuff.  Already on ia64 it is a runtime
> > determination if the clocks are available.  
> 
> So should I redo that just to call __sysconf (_SC_{THREAD_,}CPUTIME)?

I think so, yes.  Or anyway, cope with runtime failures somehow.  I'd have
to look into the code closer to see if there is an obvious cheaper way to
catch it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] Re: Whats up with _POSIX_CPUTIME (take 2)
  2004-12-01 20:22               ` Roland McGrath
@ 2004-12-01 21:11                 ` Jakub Jelinek
  0 siblings, 0 replies; 12+ messages in thread
From: Jakub Jelinek @ 2004-12-01 21:11 UTC (permalink / raw)
  To: Roland McGrath, Ulrich Drepper; +Cc: Steve Munroe, libc-hacker, dgm69

On Wed, Dec 01, 2004 at 12:22:33PM -0800, Roland McGrath wrote:
> > On Wed, Dec 01, 2004 at 12:00:06PM -0800, Roland McGrath wrote:
> > > > Did you just mean the s/#if #defined/#if defined/ in posix/tst-regex2.c?
> > > > That's the only thing I found during testing...
> > > 
> > > That's the only thing I noticed, but it indicated the patch wasn't tested.
> > > 
> > > I don't like the __HAVE_CPUTIME stuff.  Already on ia64 it is a runtime
> > > determination if the clocks are available.  
> > 
> > So should I redo that just to call __sysconf (_SC_{THREAD_,}CPUTIME)?
> 
> I think so, yes.  Or anyway, cope with runtime failures somehow.  I'd have
> to look into the code closer to see if there is an obvious cheaper way to
> catch it.

Well, upon closer inspection timer_create (the userland one)
returns ENOTSUP whenever it sees CPU timer clocks (which is something
that should be done whenever those CPU timer constants are in the headers,
so defined _POSIX_*CPUTIME && _POSIX_*CPUTIME >= 0 is the right check here),
but then later on has code to somehow handle it (but it can't work
correctly, as the clocks are done in different thread).
So here is another patch, mostly deleting one:
 18 files changed, 54 insertions(+), 1185 deletions(-)

2004-12-01  Jakub Jelinek  <jakub@redhat.coM.

	* posix/tst-regex.c: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
	conditionals instead of defined _POSIX_CPUTIME.
	(main): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
	option is available.
	* posix/tst-regex.c2: Use defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
	conditionals instead of defined _POSIX_CPUTIME.
	(do_test): If _POSIX_CPUTIME == 0, call sysconf to see if CPUTIME
	option is available.
	* sysdeps/posix/sysconf.c (__sysconf): If _POSIX_CPUTIME resp.
	_POSIX_THREAD_CPUTIME is defined to 0, return -1 for the corresponding
	_SC_ argument.
nptl/
	* sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
	_POSIX_THREAD_CPUTIME): Define to 0.
	* sysdeps/pthread/timer_create.c (timer_create): Remove unused code
	handling CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
	* sysdeps/pthread/timer_routines.c (__timer_signal_thread_pclk,
	__timer_signal_thread_tclk): Remove.
	(init_module): Remove their initialization.
	(thread_cleanup): Remove their cleanup assertions.
	* sysdeps/pthread/posix-timer.h (__timer_signal_thread_pclk,
	__timer_signal_thread_tclk): Remove.
	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
linuxthreads/
	* sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
	_POSIX_THREAD_CPUTIME): Define to 0.
	* sysdeps/pthread/timer_create.c (timer_create): Remove unused code
	handling CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
	* sysdeps/pthread/timer_routines.c (__timer_signal_thread_pclk,
	__timer_signal_thread_tclk): Remove.
	(init_module): Remove their initialization.
	(thread_cleanup): Remove their cleanup assertions.
	* sysdeps/pthread/posix-timer.h (__timer_signal_thread_pclk,
	__timer_signal_thread_tclk): Remove.
	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.

--- libc/posix/tst-regex.c.jj	2003-11-29 10:14:14.000000000 +0100
+++ libc/posix/tst-regex.c	2004-11-30 23:56:39.000000000 +0100
@@ -37,7 +37,7 @@
 #include <regex.h>
 
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
 static clockid_t cl;
 static int use_clock;
 #endif
@@ -118,9 +118,14 @@ main (int argc, char *argv[])
   if (inlen != 0)
     error (EXIT_FAILURE, errno, "cannot convert buffer");
 
-#ifdef _POSIX_CPUTIME
-  /* See whether we can use the CPU clock.  */
-  use_clock = clock_getcpuclockid (0, &cl) == 0;
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+# if _POSIX_CPUTIME == 0
+  if (sysconf (_SC_CPUTIME) < 0)
+    use_clock = 0;
+  else
+# endif
+    /* See whether we can use the CPU clock.  */
+    use_clock = clock_getcpuclockid (0, &cl) == 0;
 #endif
 
 #ifdef DEBUG
@@ -202,7 +207,7 @@ static int
 run_test (const char *expr, const char *mem, size_t memlen, int icase,
 	  int expected)
 {
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   struct timespec start;
   struct timespec finish;
 #endif
@@ -211,7 +216,7 @@ run_test (const char *expr, const char *
   size_t offset;
   int cnt;
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     use_clock = clock_gettime (cl, &start) == 0;
 #endif
@@ -260,7 +265,7 @@ run_test (const char *expr, const char *
 
   regfree (&re);
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     {
       use_clock = clock_gettime (cl, &finish) == 0;
@@ -345,7 +350,7 @@ static int
 run_test_backwards (const char *expr, const char *mem, size_t memlen,
 		    int icase, int expected)
 {
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   struct timespec start;
   struct timespec finish;
 #endif
@@ -354,7 +359,7 @@ run_test_backwards (const char *expr, co
   size_t offset;
   int cnt;
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     use_clock = clock_gettime (cl, &start) == 0;
 #endif
@@ -406,7 +411,7 @@ run_test_backwards (const char *expr, co
 
   regfree (&re);
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
   if (use_clock && !timing)
     {
       use_clock = clock_gettime (cl, &finish) == 0;
--- libc/posix/tst-regex2.c.jj	2004-11-19 00:55:41.000000000 +0100
+++ libc/posix/tst-regex2.c	2004-12-01 10:50:35.000000000 +0100
@@ -8,7 +8,7 @@
 #include <time.h>
 #include <unistd.h>
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
 static clockid_t cl;
 static int use_clock;
 #endif
@@ -16,9 +16,14 @@ static int use_clock;
 static int
 do_test (void)
 {
-#ifdef _POSIX_CPUTIME
-  /* See whether we can use the CPU clock.  */
-  use_clock = clock_getcpuclockid (0, &cl) == 0;
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
+# if _POSIX_CPUTIME == 0
+  if (sysconf (_SC_CPUTIME) < 0)
+    use_clock = 0;
+  else
+# endif
+    /* See whether we can use the CPU clock.  */
+    use_clock = clock_getcpuclockid (0, &cl) == 0;
 #endif
 
   static const char *pat[] = {
@@ -112,7 +117,7 @@ do_test (void)
 	      rpbuf.no_sub = 1;
 	  }
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
       struct timespec start, stop;
       if (use_clock)
 	use_clock = clock_gettime (cl, &start) == 0;
@@ -211,7 +216,7 @@ do_test (void)
 	    }
 	}
 
-#ifdef _POSIX_CPUTIME
+#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
       if (use_clock)
 	use_clock = clock_gettime (cl, &stop) == 0;
       if (use_clock)
--- libc/sysdeps/posix/sysconf.c.jj	2004-11-28 17:36:05.000000000 +0100
+++ libc/sysdeps/posix/sysconf.c	2004-11-30 23:44:26.000000000 +0100
@@ -890,7 +890,7 @@ __sysconf (name)
 #endif
 
     case _SC_CPUTIME:
-#ifdef _POSIX_CPUTIME
+#if _POSIX_CPUTIME > 0
       return _POSIX_CPUTIME;
 #else
       return -1;
@@ -1055,7 +1055,7 @@ __sysconf (name)
 #endif
 
     case _SC_THREAD_CPUTIME:
-#ifdef _POSIX_THREAD_CPUTIME
+#if _POSIX_THREAD_CPUTIME > 0
       return _POSIX_THREAD_CPUTIME;
 #else
       return -1;
--- libc/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h	2004-12-01 00:03:11.000000000 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h	2004-12-01 00:02:49.000000000 +0100
@@ -104,6 +104,12 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	200112L
 
+/* CPU-time clocks support needs to be checked at runtime.  */
+#define _POSIX_CPUTIME	0
+
+/* Clock support in threads must be also checked at runtime.  */
+#define _POSIX_THREAD_CPUTIME	0
+
 /* GNU libc provides regular expression handling.  */
 #define _POSIX_REGEXP	1
 
--- libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h	2004-12-01 00:03:21.000000000 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h	2004-12-01 21:53:38.381596773 +0100
@@ -1,178 +0,0 @@
-/* Define POSIX options for Linux.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define _POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME 0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME  0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	200112L
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are available.  */
-#define _POSIX_CLOCK_SELECTION	200112L
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection so far.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/nptl/sysdeps/pthread/timer_routines.c.jj	2004-10-05 09:04:47.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_routines.c	2004-12-01 21:42:29.527373273 +0100
@@ -53,12 +53,6 @@ int __timer_init_failed;
 
 /* Node for the thread used to deliver signals.  */
 struct thread_node __timer_signal_thread_rclk;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
-struct thread_node __timer_signal_thread_pclk;
-#endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
-struct thread_node __timer_signal_thread_tclk;
-#endif
 
 /* Lists to keep free and used timers and threads.  */
 struct list_links timer_free_list;
@@ -191,12 +185,6 @@ init_module (void)
     list_append (&thread_free_list, &thread_array[i].links);
 
   thread_init (&__timer_signal_thread_rclk, 0, CLOCK_REALTIME);
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
-  thread_init (&__timer_signal_thread_pclk, 0, CLOCK_PROCESS_CPUTIME_ID);
-#endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
-  thread_init (&__timer_signal_thread_tclk, 0, CLOCK_THREAD_CPUTIME_ID);
-#endif
 }
 
 
@@ -281,12 +269,6 @@ thread_cleanup (void *val)
 
       /* How did the signal thread get killed?  */
       assert (thread != &__timer_signal_thread_rclk);
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
-      assert (thread != &__timer_signal_thread_pclk);
-#endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
-      assert (thread != &__timer_signal_thread_tclk);
-#endif
 
       pthread_mutex_lock (&__timer_mutex);
 
--- libc/nptl/sysdeps/pthread/posix-timer.h.jj	2004-10-05 09:04:47.000000000 +0200
+++ libc/nptl/sysdeps/pthread/posix-timer.h	2004-12-01 21:43:23.559672235 +0100
@@ -88,16 +88,8 @@ extern pthread_once_t __timer_init_once_
 /* Nonzero if initialization of timer implementation failed.  */
 extern int __timer_init_failed;
 
-/* Nodes for the threads used to deliver signals.  */
-/* A distinct thread is used for each clock type.  */
-
+/* Node for the thread used to deliver signals.  */
 extern struct thread_node __timer_signal_thread_rclk;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
-extern struct thread_node __timer_signal_thread_pclk;
-#endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
-extern struct thread_node __timer_signal_thread_tclk;
-#endif
 
 
 /* Return pointer to timer structure corresponding to ID.  */
--- libc/nptl/sysdeps/pthread/timer_create.c.jj	2004-10-05 19:45:02.000000000 +0200
+++ libc/nptl/sysdeps/pthread/timer_create.c	2004-12-01 21:41:39.317391709 +0100
@@ -94,24 +94,7 @@ timer_create (clock_id, evp, timerid)
     case SIGEV_SIGNAL:
       /* We have a global thread for delivering timed signals.
 	 If it is not running, try to start it up.  */
-      switch (clock_id)
-	{
-	case CLOCK_REALTIME:
-	default:
-	  thread = &__timer_signal_thread_rclk;
-	  break;
-#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
-	case CLOCK_PROCESS_CPUTIME_ID:
-	  thread = &__timer_signal_thread_pclk;
-	  break;
-#endif
-#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
-	case CLOCK_THREAD_CPUTIME_ID:
-	  thread = &__timer_signal_thread_tclk;
-	  break;
-#endif
-	}
-
+      thread = &__timer_signal_thread_rclk;
       if (! thread->exists)
 	{
 	  if (__builtin_expect (__timer_thread_start (thread),
--- libc/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h.jj	2004-11-28 17:37:40.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h	2004-12-01 00:01:34.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/ix86.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h.jj	2004-11-28 17:37:40.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h	2004-12-01 21:52:26.804404860 +0100
@@ -107,6 +107,12 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	200112L
 
+/* CPU-time clocks support needs to be checked at runtime.  */
+#define _POSIX_CPUTIME	0
+
+/* Clock support in threads must be also checked at runtime.  */
+#define _POSIX_THREAD_CPUTIME	0
+
 /* GNU libc provides regular expression handling.  */
 #define _POSIX_REGEXP	1
 
--- libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h	2004-12-01 00:02:03.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/ia64.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h.jj	2004-11-28 17:37:41.000000000 +0100
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h	2004-12-01 00:02:14.000000000 +0100
@@ -1,181 +0,0 @@
-/* Define POSIX options for Linux/x86_64.
-   Copyright (C) 1996-2001, 2002, 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
-   modify it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
-
-/* Job control is supported.  */
-#define	_POSIX_JOB_CONTROL	1
-
-/* Processes have a saved set-user-ID and a saved set-group-ID.  */
-#define	_POSIX_SAVED_IDS	1
-
-/* Priority scheduling is supported.  */
-#define	_POSIX_PRIORITY_SCHEDULING	200112L
-
-/* Synchronizing file data is supported.  */
-#define	_POSIX_SYNCHRONIZED_IO	200112L
-
-/* The fsync function is present.  */
-#define	_POSIX_FSYNC	200112L
-
-/* Mapping of files to memory is supported.  */
-#define	_POSIX_MAPPED_FILES	200112L
-
-/* Locking of all memory is supported.  */
-#define	_POSIX_MEMLOCK	200112L
-
-/* Locking of ranges of memory is supported.  */
-#define	_POSIX_MEMLOCK_RANGE	200112L
-
-/* Setting of memory protections is supported.  */
-#define	_POSIX_MEMORY_PROTECTION	200112L
-
-/* Only root can change owner of file.  */
-#define	_POSIX_CHOWN_RESTRICTED	1
-
-/* `c_cc' member of 'struct termios' structure can be disabled by
-   using the value _POSIX_VDISABLE.  */
-#define	_POSIX_VDISABLE	'\0'
-
-/* Filenames are not silently truncated.  */
-#define	_POSIX_NO_TRUNC	1
-
-/* X/Open realtime support is available.  */
-#define _XOPEN_REALTIME	1
-
-/* X/Open realtime thread support is available.  */
-#define _XOPEN_REALTIME_THREADS	1
-
-/* XPG4.2 shared memory is supported.  */
-#define	_XOPEN_SHM	1
-
-/* Tell we have POSIX threads.  */
-#define _POSIX_THREADS	200112L
-
-/* We have the reentrant functions described in POSIX.  */
-#define _POSIX_REENTRANT_FUNCTIONS      1
-#define _POSIX_THREAD_SAFE_FUNCTIONS	200112L
-
-/* We provide priority scheduling for threads.  */
-#define	_POSIX_THREAD_PRIORITY_SCHEDULING	200112L
-
-/* We support user-defined stack sizes.  */
-#define _POSIX_THREAD_ATTR_STACKSIZE	200112L
-
-/* We support user-defined stacks.  */
-#define _POSIX_THREAD_ATTR_STACKADDR	200112L
-
-/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
-#define _POSIX_SEMAPHORES	200112L
-
-/* Real-time signals are supported.  */
-#define _POSIX_REALTIME_SIGNALS	200112L
-
-/* We support asynchronous I/O.  */
-#define _POSIX_ASYNCHRONOUS_IO	200112L
-#define _POSIX_ASYNC_IO		1
-/* Alternative name for Unix98.  */
-#define _LFS_ASYNCHRONOUS_IO	1
-/* Support for prioritization is also available.  */
-#define _POSIX_PRIORITIZED_IO	200112L
-
-/* The LFS support in asynchronous I/O is also available.  */
-#define _LFS64_ASYNCHRONOUS_IO	1
-
-/* The rest of the LFS is also available.  */
-#define _LFS_LARGEFILE		1
-#define _LFS64_LARGEFILE	1
-#define _LFS64_STDIO		1
-
-/* POSIX shared memory objects are implemented.  */
-#define _POSIX_SHARED_MEMORY_OBJECTS	200112L
-
-/* CPU-time clocks supported.  */
-#define _POSIX_CPUTIME	0
-
-/* We support the clock also in threads.  */
-#define _POSIX_THREAD_CPUTIME	0
-
-/* GNU libc provides regular expression handling.  */
-#define _POSIX_REGEXP	1
-
-/* Reader/Writer locks are available.  */
-#define _POSIX_READER_WRITER_LOCKS	200112L
-
-/* We have a POSIX shell.  */
-#define _POSIX_SHELL	1
-
-/* We support the Timeouts option.  */
-#define _POSIX_TIMEOUTS	200112L
-
-/* We support spinlocks.  */
-#define _POSIX_SPIN_LOCKS	200112L
-
-/* The `spawn' function family is supported.  */
-#define _POSIX_SPAWN	200112L
-
-/* We have POSIX timers.  */
-#define _POSIX_TIMERS	200112L
-
-/* The barrier functions are available.  */
-#define _POSIX_BARRIERS	200112L
-
-/* POSIX message queues are available.  */
-#define	_POSIX_MESSAGE_PASSING	200112L
-
-/* Thread process-shared synchronization is not supported.  */
-#define _POSIX_THREAD_PROCESS_SHARED	-1
-
-/* The monotonic clock might be available.  */
-#define _POSIX_MONOTONIC_CLOCK	0
-
-/* The clock selection interfaces are not available.  */
-#define _POSIX_CLOCK_SELECTION	-1
-
-/* Advisory information interfaces are available.  */
-#define _POSIX_ADVISORY_INFO	200112L
-
-/* IPv6 support is available.  */
-#define _POSIX_IPV6	200112L
-
-/* Raw socket support is available.  */
-#define _POSIX_RAW_SOCKETS	200112L
-
-/* We have at least one terminal.  */
-#define _POSIX2_CHAR_TERM	200112L
-
-/* Neither process nor thread sporadic server interfaces is available.  */
-#define _POSIX_SPORADIC_SERVER	-1
-#define _POSIX_THREAD_SPORADIC_SERVER	-1
-
-/* trace.h is not available.  */
-#define _POSIX_TRACE	-1
-#define _POSIX_TRACE_EVENT_FILTER	-1
-#define _POSIX_TRACE_INHERIT	-1
-#define _POSIX_TRACE_LOG	-1
-
-/* Typed memory objects are not available.  */
-#define _POSIX_TYPED_MEMORY_OBJECTS	-1
-
-/* No support for priority inheritance or protection.  */
-#define _POSIX_THREAD_PRIO_INHERIT	-1
-#define _POSIX_THREAD_PRIO_PROTECT	-1
-
-#endif /* posix_opt.h */
--- libc/linuxthreads/sysdeps/pthread/timer_routines.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_routines.c	2004-12-01 21:53:01.994107891 +0100
@@ -52,12 +52,6 @@ int __timer_init_failed;
 
 /* Node for the thread used to deliver signals.  */
 struct thread_node __timer_signal_thread_rclk;
-#ifdef _POSIX_CPUTIME
-struct thread_node __timer_signal_thread_pclk;
-#endif
-#ifdef _POSIX_THREAD_CPUTIME
-struct thread_node __timer_signal_thread_tclk;
-#endif
 
 /* Lists to keep free and used timers and threads.  */
 struct list_links timer_free_list;
@@ -190,12 +184,6 @@ init_module (void)
     list_append (&thread_free_list, &thread_array[i].links);
 
   thread_init (&__timer_signal_thread_rclk, 0, CLOCK_REALTIME);
-#ifdef _POSIX_CPUTIME
-  thread_init (&__timer_signal_thread_pclk, 0, CLOCK_PROCESS_CPUTIME_ID);
-#endif
-#ifdef _POSIX_THREAD_CPUTIME
-  thread_init (&__timer_signal_thread_tclk, 0, CLOCK_THREAD_CPUTIME_ID);
-#endif
 }
 
 
@@ -280,12 +268,6 @@ thread_cleanup (void *val)
 
       /* How did the signal thread get killed?  */
       assert (thread != &__timer_signal_thread_rclk);
-#ifdef _POSIX_CPUTIME
-      assert (thread != &__timer_signal_thread_pclk);
-#endif
-#ifdef _POSIX_THREAD_CPUTIME
-      assert (thread != &__timer_signal_thread_tclk);
-#endif
 
       pthread_mutex_lock (&__timer_mutex);
 
--- libc/linuxthreads/sysdeps/pthread/posix-timer.h.jj	2002-08-27 00:39:43.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/posix-timer.h	2004-12-01 21:46:25.773022947 +0100
@@ -1,5 +1,5 @@
 /* Definitions for POSIX timer implementation on top of LinuxThreads.
-   Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
 
@@ -85,12 +85,6 @@ extern int __timer_init_failed;
 /* A distinct thread is used for each clock type.  */
 
 extern struct thread_node __timer_signal_thread_rclk;
-#ifdef _POSIX_CPUTIME
-extern struct thread_node __timer_signal_thread_pclk;
-#endif
-#ifdef _POSIX_THREAD_CPUTIME
-extern struct thread_node __timer_signal_thread_tclk;
-#endif
 
 
 /* Return pointer to timer structure corresponding to ID.  */
--- libc/linuxthreads/sysdeps/pthread/timer_create.c.jj	2004-04-21 10:06:01.000000000 +0200
+++ libc/linuxthreads/sysdeps/pthread/timer_create.c	2004-12-01 21:45:19.678856310 +0100
@@ -94,24 +94,7 @@ timer_create (clock_id, evp, timerid)
     case SIGEV_SIGNAL:
       /* We have a global thread for delivering timed signals.
 	 If it is not running, try to start it up.  */
-      switch (clock_id)
-	{
-	case CLOCK_REALTIME:
-	default:
-	  thread = &__timer_signal_thread_rclk;
-	  break;
-#ifdef _POSIX_CPUTIME
-	case CLOCK_PROCESS_CPUTIME_ID:
-	  thread = &__timer_signal_thread_pclk;
-	  break;
-#endif
-#ifdef _POSIX_THREAD_CPUTIME
-	case CLOCK_THREAD_CPUTIME_ID:
-	  thread = &__timer_signal_thread_tclk;
-	  break;
-#endif
-	}
-
+      thread = &__timer_signal_thread_rclk;
       if (! thread->exists)
 	{
 	  if (__builtin_expect (__timer_thread_start (thread),
--- libc/linuxthreads/tst-clock1.c.jj	2004-07-09 01:44:50.000000000 +0200
+++ libc/linuxthreads/tst-clock1.c	2004-11-30 23:59:30.000000000 +0100
@@ -25,7 +25,7 @@
 #include <unistd.h>
 
 
-#if _POSIX_THREAD_CPUTIME
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
 static pthread_barrier_t b2;
 static pthread_barrier_t bN;
 
@@ -55,9 +55,17 @@ tf (void *arg)
 int
 do_test (void)
 {
-#if _POSIX_THREAD_CPUTIME
+#if defined _POSIX_THREAD_CPUTIME && _POSIX_THREAD_CPUTIME >= 0
 # define N 10
 
+# if _POSIX_THREAD_CPUTIME == 0
+  if (sysconf (_SC_THREAD_CPUTIME) < 0)
+    {
+      puts ("_POSIX_THREAD_CPUTIME option not available");
+      return 0;
+    }
+# endif
+
   if (pthread_barrier_init (&b2, NULL, 2) != 0
       || pthread_barrier_init (&bN, NULL, N + 1) != 0)
     {


	Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2004-12-01 21:11 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-30 20:16 Whats up with _POSIX_CPUTIME Steve Munroe
2004-11-30 20:42 ` Jakub Jelinek
2004-11-30 22:21   ` Roland McGrath
2004-11-30 23:35     ` [PATCH] " Jakub Jelinek
2004-12-01  0:08       ` Roland McGrath
2004-12-01 10:42         ` Jakub Jelinek
2004-12-01 20:00           ` Roland McGrath
2004-12-01 20:20             ` Jakub Jelinek
2004-12-01 20:22               ` Roland McGrath
2004-12-01 21:11                 ` [PATCH] Re: Whats up with _POSIX_CPUTIME (take 2) Jakub Jelinek
2004-11-30 22:20 ` Whats up with _POSIX_CPUTIME Roland McGrath
2004-12-01  0:00   ` Steve Munroe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).