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.
This commit is contained in:
Ulrich Drepper 2004-12-10 00:41:30 +00:00
parent 708bfb9a90
commit bf7c04cd5f
20 changed files with 89 additions and 1185 deletions

View File

@ -1,3 +1,17 @@
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.
2004-12-08 Jakub Jelinek <jakub@redhat.com>
* elf/ldd.bash.in: When set -o pipefail is available, use that for

View File

@ -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. */

View File

@ -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),

View File

@ -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);

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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)
{

View File

@ -1,3 +1,24 @@
2004-12-09 Ulrich Drepper <drepper@redhat.com>
* init.c (__pthread_initialize_minimal_internal): Also unblock
SIGSETXID.
2004-12-01 Jakub Jelinek <jakub@redhat.com>
* 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.
2004-12-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/ia64/tcb-offsets.sym (TID): Add.

View File

@ -88,16 +88,8 @@ extern pthread_once_t __timer_init_once_control;
/* 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. */

View File

@ -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),

View File

@ -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);

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 *mem, size_t memlen, int icase,
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 *mem, size_t memlen, int icase,
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, const char *mem, size_t memlen,
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, const char *mem, size_t memlen,
regfree (&re);
#ifdef _POSIX_CPUTIME
#if defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0
if (use_clock && !timing)
{
use_clock = clock_gettime (cl, &finish) == 0;

View File

@ -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)

View File

@ -897,7 +897,7 @@ __sysconf (name)
#endif
case _SC_CPUTIME:
#ifdef _POSIX_CPUTIME
#if _POSIX_CPUTIME > 0
return _POSIX_CPUTIME;
#else
return -1;
@ -1062,7 +1062,7 @@ __sysconf (name)
#endif
case _SC_THREAD_CPUTIME:
#ifdef _POSIX_THREAD_CPUTIME
#if _POSIX_THREAD_CPUTIME > 0
return _POSIX_THREAD_CPUTIME;
#else
return -1;