diff options
20 files changed, 89 insertions, 1185 deletions
@@ -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 diff --git a/linuxthreads/sysdeps/pthread/posix-timer.h b/linuxthreads/sysdeps/pthread/posix-timer.h index 6710291b9b..1b0a2b65e4 100644 --- a/linuxthreads/sysdeps/pthread/posix-timer.h +++ b/linuxthreads/sysdeps/pthread/posix-timer.h @@ -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. */ diff --git a/linuxthreads/sysdeps/pthread/timer_create.c b/linuxthreads/sysdeps/pthread/timer_create.c index 3fde4c74c9..7f7e886c83 100644 --- a/linuxthreads/sysdeps/pthread/timer_create.c +++ b/linuxthreads/sysdeps/pthread/timer_create.c @@ -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), diff --git a/linuxthreads/sysdeps/pthread/timer_routines.c b/linuxthreads/sysdeps/pthread/timer_routines.c index 6e3797d0b5..3877b86fbb 100644 --- a/linuxthreads/sysdeps/pthread/timer_routines.c +++ b/linuxthreads/sysdeps/pthread/timer_routines.c @@ -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); diff --git a/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h b/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h index 23baba8915..71b7e74649 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h +++ b/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h @@ -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 diff --git a/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h b/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h deleted file mode 100644 index a9b9f098a9..0000000000 --- a/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h +++ /dev/null @@ -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 */ diff --git a/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h b/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h deleted file mode 100644 index 95728c106f..0000000000 --- a/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h +++ /dev/null @@ -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 */ diff --git a/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h b/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h deleted file mode 100644 index 8973bc8fdf..0000000000 --- a/linuxthreads/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h +++ /dev/null @@ -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 */ diff --git a/linuxthreads/tst-clock1.c b/linuxthreads/tst-clock1.c index 54f5041282..bca40956e2 100644 --- a/linuxthreads/tst-clock1.c +++ b/linuxthreads/tst-clock1.c @@ -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) { diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 4cb92c9d78..f779bd4968 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -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. diff --git a/nptl/sysdeps/pthread/posix-timer.h b/nptl/sysdeps/pthread/posix-timer.h index 843e44711a..8b4cbc8cdf 100644 --- a/nptl/sysdeps/pthread/posix-timer.h +++ b/nptl/sysdeps/pthread/posix-timer.h @@ -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. */ diff --git a/nptl/sysdeps/pthread/timer_create.c b/nptl/sysdeps/pthread/timer_create.c index 2f5a587e8d..2809ac7443 100644 --- a/nptl/sysdeps/pthread/timer_create.c +++ b/nptl/sysdeps/pthread/timer_create.c @@ -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), diff --git a/nptl/sysdeps/pthread/timer_routines.c b/nptl/sysdeps/pthread/timer_routines.c index caa93433e3..8d5b1d13a5 100644 --- a/nptl/sysdeps/pthread/timer_routines.c +++ b/nptl/sysdeps/pthread/timer_routines.c @@ -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); diff --git a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h index a32197ee16..09f3df11cb 100644 --- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h +++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h @@ -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 diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h deleted file mode 100644 index f46b381406..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h +++ /dev/null @@ -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 */ diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h deleted file mode 100644 index f46b381406..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h +++ /dev/null @@ -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 */ diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h deleted file mode 100644 index f46b381406..0000000000 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h +++ /dev/null @@ -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 */ diff --git a/posix/tst-regex.c b/posix/tst-regex.c index 53960a3d9a..6a71e1239a 100644 --- a/posix/tst-regex.c +++ b/posix/tst-regex.c @@ -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; diff --git a/posix/tst-regex2.c b/posix/tst-regex2.c index a107f73ba4..0d82c2acdd 100644 --- a/posix/tst-regex2.c +++ b/posix/tst-regex2.c @@ -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) diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c index 72212fe26d..cdd1fe9636 100644 --- a/sysdeps/posix/sysconf.c +++ b/sysdeps/posix/sysconf.c @@ -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; |