summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.cvsignore2
-rw-r--r--ChangeLog16
-rw-r--r--bits/confname.h89
-rw-r--r--linuxthreads/ChangeLog6
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h12
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h134
-rw-r--r--posix/getconf.c129
-rw-r--r--sysdeps/generic/bits/confname.h89
-rw-r--r--sysdeps/mach/hurd/bits/posix_opt.h8
-rw-r--r--sysdeps/posix/sysconf.c271
-rw-r--r--sysdeps/unix/i386/clock_getcpuclockid.c2
-rw-r--r--sysdeps/unix/i386/i586/clock_getres.c10
-rw-r--r--sysdeps/unix/i386/i586/clock_gettime.c10
-rw-r--r--sysdeps/unix/sysv/linux/bits/posix_opt.h6
-rw-r--r--sysdeps/unix/sysv/linux/i386/bits/time.h10
15 files changed, 780 insertions, 14 deletions
diff --git a/.cvsignore b/.cvsignore
index 5a2c1b84db..2f8a931382 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -23,3 +23,5 @@ linuxthreads
 
 libc.prj .libc.prcs_aux
 libc.proj .snprj
+
+TODO.html
diff --git a/ChangeLog b/ChangeLog
index 0a24150c1a..f2e6f98371 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2000-04-12  Ulrich Drepper  <drepper@redhat.com>
 
+	* posix/getconf.c: Add support for many more POSIX options.
+	* sysdeps/posix/sysconf.c: Likewise.
+	* sysdeps/generic/bits/confname.h: Add many more POSIX options.
+	* sysdeps/mach/hurd/bits/posix_opt.h: Add _POSIX_REGEXP and
+	_POSIX_SHELL.
+	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
+	* sysdeps/unix/sysv/linux/i386/bits/time.h: Rename __CLOCK_HIGHRES to
+	CLOCK_PROCESS_CPUTIME_ID.  Add define CLOCK_MONOTONIC and
+	CLOCK_THREAD_CPUTIME_ID.
+	* sysdeps/unix/i386/clock_getcpuclockid.c: Set *clock_id to
+	CLOCK_PROCESS_CPUTIME_ID.
+	* sysdeps/unix/i386/i586/clock_getres.c: Change for renaming of
+	__CLOCK_HIGHRES to CLOCK_PROCESS_CPUTIME_ID.  Handle
+	CLOCK_THREAD_CPUTIME_ID and CLOCK_MONOTONIC the same.
+	* sysdeps/unix/i386/i586/clock_gettime.c: Likewise.
+
 	* malloc/Makefile (tests): Add tst-calloc.
 	* malloc/tst-calloc.c: New file.
 
diff --git a/bits/confname.h b/bits/confname.h
index 229088d67d..3c4dbdb98c 100644
--- a/bits/confname.h
+++ b/bits/confname.h
@@ -1,5 +1,5 @@
 /* `sysconf', `pathconf', and `confstr' NAME values.  Generic version.
-   Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1995-1998, 2000 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
@@ -335,8 +335,93 @@ enum
 #define _SC_XOPEN_LEGACY		_SC_XOPEN_LEGACY
     _SC_XOPEN_REALTIME,
 #define _SC_XOPEN_REALTIME		_SC_XOPEN_REALTIME
-    _SC_XOPEN_REALTIME_THREADS
+    _SC_XOPEN_REALTIME_THREADS,
 #define _SC_XOPEN_REALTIME_THREADS	_SC_XOPEN_REALTIME_THREADS
+
+    _SC_ADVISORY_INFO,
+#define _SC_ADVISORY_INFO		_SC_ADVISORY_INFO
+    _SC_BARRIERS,
+#define _SC_BARRIERS			_SC_BARRIERS
+    _SC_BASE,
+#define _SC_BASE			_SC_BASE
+    _SC_C_LANG_SUPPORT,
+#define _SC_C_LANG_SUPPORT		_SC_C_LANG_SUPPORT
+    _SC_C_LANG_SUPPORT_R,
+#define _SC_C_LANG_SUPPORT_R		_SC_C_LANG_SUPPORT_R
+    _SC_CLOCK_SELECTION,
+#define _SC_CLOCK_SELECTION		_SC_CLOCK_SELECTION
+    _SC_CPUTIME,
+#define _SC_CPUTIME			_SC_CPUTIME
+    _SC_THREAD_CPUTIME,
+#define _SC_THREAD_CPUTIME		_SC_THREAD_CPUTIME
+    _SC_DEVICE_IO,
+#define _SC_DEVICE_IO			_SC_DEVICE_IO
+    _SC_DEVICE_SPECIFIC,
+#define _SC_DEVICE_SPECIFIC		_SC_DEVICE_SPECIFIC
+    _SC_DEVICE_SPECIFIC_R,
+#define _SC_DEVICE_SPECIFIC_R		_SC_DEVICE_SPECIFIC_R
+    _SC_FD_MGMT,
+#define _SC_FD_MGMT			_SC_FD_MGMT
+    _SC_FIFO,
+#define _SC_FIFO			_SC_FIFO
+    _SC_PIPE,
+#define _SC_PIPE			_SC_PIPE
+    _SC_FILE_ATTRIBUTES,
+#define _SC_FILE_ATTRIBUTES		_SC_FILE_ATTRIBUTES
+    _SC_FILE_LOCKING,
+#define _SC_FILE_LOCKING		_SC_FILE_LOCKING
+    _SC_FILE_SYSTEM,
+#define _SC_FILE_SYSTEM			_SC_FILE_SYSTEM
+    _SC_MONOTONIC_CLOCK,
+#define _SC_MONOTONIC_CLOCK		_SC_MONOTONIC_CLOCK
+    _SC_MULTIPLE_PROCESS,
+#define _SC_MULTIPLE_PROCESS		_SC_MULTIPLE_PROCESS
+    _SC_SINGLE_PROCESS,
+#define _SC_SINGLE_PROCESS		_SC_SINGLE_PROCESS
+    _SC_NETWORKING,
+#define _SC_NETWORKING			_SC_NETWORKING
+    _SC_READER_WRITER_LOCKS,
+#define _SC_READER_WRITER_LOCKS		_SC_READER_WRITER_LOCKS
+    _SC_SPIN_LOCKS,
+#define _SC_SPIN_LOCKS			_SC_SPIN_LOCKS
+    _SC_REGEXP,
+#define _SC_REGEXP			_SC_REGEXP
+    _SC_REGEX_VERSION,
+#define _SC_REGEX_VERSION		_SC_REGEX_VERSION
+    _SC_SHELL,
+#define _SC_SHELL			_SC_SHELL
+    _SC_SIGNALS,
+#define _SC_SIGNALS			_SC_SIGNALS
+    _SC_SPAWN,
+#define _SC_SPAWN			_SC_SPAWN
+    _SC_SPORADIC_SERVER,
+#define _SC_SPORADIC_SERVER		_SC_SPORADIC_SERVER
+    _SC_THREAD_SPORADIC_SERVER,
+#define _SC_THREAD_SPORADIC_SERVER	_SC_THREAD_SPORADIC_SERVER
+    _SC_SYSTEM_DATABASE,
+#define _SC_SYSTEM_DATABASE		_SC_SYSTEM_DATABASE
+    _SC_SYSTEM_DATABASE_R,
+#define _SC_SYSTEM_DATABASE_R		_SC_SYSTEM_DATABASE_R
+    _SC_TIMEOUTS,
+#define _SC_TIMEOUTS			_SC_TIMEOUTS
+    _SC_TYPED_MEMORY_OBJECTS,
+#define _SC_TYPED_MEMORY_OBJECTS	_SC_TYPED_MEMORY_OBJECTS
+    _SC_USER_GROUPS,
+#define _SC_USER_GROUPS			_SC_USER_GROUPS
+    _SC_USER_GROUPS_R,
+#define _SC_USER_GROUPS_R		_SC_USER_GROUPS_R
+    _SC_PBS,
+#define _SC_PBS				_SC_PBS
+    _SC_PBS_ACCOUNTING,
+#define _SC_PBS_ACCOUNTING		_SC_PBS_ACCOUNTING
+    _SC_PBS_LOCATE,
+#define _SC_PBS_LOCATE			_SC_PBS_LOCATE
+    _SC_PBS_MESSAGE,
+#define _SC_PBS_MESSAGE			_SC_PBS_MESSAGE
+    _SC_PBS_TRACK,
+#define _SC_PBS_TRACK			_SC_PBS_TRACK
+    _SC_SYMLOOP,
+#define _SC_SYMLOOP			_SC_SYMLOOP
   };
 
 #if (defined __USE_POSIX2 || defined __USE_UNIX98 \
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index bc0e75eac7..9e30ebb308 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,9 @@
+2000-04-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Add various new POSIX
+	macros.
+	* sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: New file.
+
 2000-04-11  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/unix/sysv/linux/bits/posix_opt.h: Add
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h b/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h
index 6ee11219ef..d5f9e3f35c 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h
+++ b/linuxthreads/sysdeps/unix/sysv/linux/bits/posix_opt.h
@@ -110,4 +110,16 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	1
 
+/* GNU libc provides regular expression handling.  */
+#define _POSIX_REGEXP	1
+
+/* Reader/Writer locks are available.  */
+#define _POSIX_READER_WRITER_LOCKS	200912L
+
+/* We have a POSIX shell.  */
+#define _POSIX_SHELL	1
+
+/* We support the Timeouts option.  */
+#define _POSIX_TIMEOUTS	200912L
+
 #endif /* posix_opt.h */
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h b/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
new file mode 100644
index 0000000000..22c5a5b8ac
--- /dev/null
+++ b/linuxthreads/sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
@@ -0,0 +1,134 @@
+/* Define POSIX options for Linux.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000 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	1
+
+/* Synchronizing file data is supported.  */
+#define	_POSIX_SYNCHRONIZED_IO	1
+
+/* The fsync function is present.  */
+#define	_POSIX_FSYNC	1
+
+/* Mapping of files to memory is supported.  */
+#define	_POSIX_MAPPED_FILES	1
+
+/* Locking of all memory is supported.  */
+#define	_POSIX_MEMLOCK	1
+
+/* Locking of ranges of memory is supported.  */
+#define	_POSIX_MEMLOCK_RANGE	1
+
+/* Setting of memory protections is supported.  */
+#define	_POSIX_MEMORY_PROTECTION	1
+
+/* Implementation supports `poll' function.  */
+#define	_POSIX_POLL	1
+
+/* Implementation supports `select' and `pselect' functions.  */
+#define	_POSIX_SELECT	1
+
+/* 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	1
+
+/* We have the reentrant functions described in POSIX.  */
+#define _POSIX_REENTRANT_FUNCTIONS      1
+#define _POSIX_THREAD_SAFE_FUNCTIONS	1
+
+/* We provide priority scheduling for threads.  */
+#define	_POSIX_THREAD_PRIORITY_SCHEDULING	1
+
+/* We support user-defined stack sizes.  */
+#define _POSIX_THREAD_ATTR_STACKSIZE	1
+
+/* We support user-defined stacks.  */
+#define _POSIX_THREAD_ATTR_STACKADDR	1
+
+/* We support POSIX.1b semaphores, but only the non-shared form for now.  */
+/*#define _POSIX_SEMAPHORES	1	XXX We are not quite there now.  */
+
+/* Real-time signals are supported.  */
+#define _POSIX_REALTIME_SIGNALS	1
+
+/* We support asynchronous I/O.  */
+#define _POSIX_ASYNCHRONOUS_IO	1
+/* Alternative name for Unix98.  */
+#define _LFS_ASYNCHRONOUS_IO	1
+
+/* 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	1
+
+/* CPU-time clocks supported.  */
+#define _POSIX_CPUTIME	200912L
+
+/* We support the clock also in threads.  */
+#define _POSIX_THREAD_CPUTIME	200912L
+
+/* Monotonic clock is supported.  */
+#define _POSIX_MONOTONIC_CLOCK	200912L
+
+/* GNU libc provides regular expression handling.  */
+#define _POSIX_REGEXP	1
+
+/* Reader/Writer locks are available.  */
+#define _POSIX_READER_WRITER_LOCKS	200912L
+
+/* We have a POSIX shell.  */
+#define _POSIX_SHELL	1
+
+/* We support the Timeouts option.  */
+#define _POSIX_TIMEOUTS	200912L
+
+#endif /* posix_opt.h */
diff --git a/posix/getconf.c b/posix/getconf.c
index c6b10fd27f..52cfc7d8d8 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 1995-1999, 2000 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
@@ -592,6 +592,133 @@ static const struct conf vars[] =
     { "XBS5_LPBIG_OFFBIG_LINTFLAGS", _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
 #endif
 
+#ifdef _SC_ADVISORY_INFO
+    { "ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF },
+#endif
+#ifdef _SC_BARRIERS
+    { "BARRIERS", _SC_BARRIERS, SYSCONF },
+#endif
+#ifdef _SC_BASE
+    { "BASE", _SC_BASE, SYSCONF },
+#endif
+#ifdef _SC_C_LANG_SUPPORT
+    { "C_LANG_SUPPORT", _SC_C_LANG_SUPPORT, SYSCONF },
+#endif
+#ifdef _SC_C_LANG_SUPPORT_R
+    { "C_LANG_SUPPORT_R", _SC_C_LANG_SUPPORT_R, SYSCONF },
+#endif
+#ifdef _SC_CLOCK_SELECTION
+    { "CLOCK_SELECTION", _SC_CLOCK_SELECTION, SYSCONF },
+#endif
+#ifdef _SC_CPUTIME
+    { "CPUTIME", _SC_CPUTIME, SYSCONF },
+#endif
+#ifdef _SC_THREAD_CPUTIME
+    { "THREAD_CPUTIME", _SC_THREAD_CPUTIME, SYSCONF },
+#endif
+#ifdef _SC_DEVICE_SPECIFIC
+    { "DEVICE_SPECIFIC", _SC_DEVICE_SPECIFIC, SYSCONF },
+#endif
+#ifdef _SC_DEVICE_SPECIFIC_R
+    { "DEVICE_SPECIFIC_R", _SC_DEVICE_SPECIFIC_R, SYSCONF },
+#endif
+#ifdef _SC_FD_MGMT
+    { "FD_MGMT", _SC_FD_MGMT, SYSCONF },
+#endif
+#ifdef _SC_FIFO
+    { "FIFO", _SC_FIFO, SYSCONF },
+#endif
+#ifdef _SC_PIPE
+    { "PIPE", _SC_PIPE, SYSCONF },
+#endif
+#ifdef _SC_FILE_ATTRIBUTES
+    { "FILE_ATTRIBUTES", _SC_FILE_ATTRIBUTES, SYSCONF },
+#endif
+#ifdef _SC_FILE_LOCKING
+    { "FILE_LOCKING", _SC_FILE_LOCKING, SYSCONF },
+#endif
+#ifdef _SC_FILE_SYSTEM
+    { "FILE_SYSTEM", _SC_FILE_SYSTEM, SYSCONF },
+#endif
+#ifdef _SC_MONOTONIC_CLOCK
+    { "MONOTONIC_CLOCK", _SC_MONOTONIC_CLOCK, SYSCONF },
+#endif
+#ifdef _SC_MULTIPLE_PROCESS
+    { "MULTIPLE_PROCESS", _SC_MULTIPLE_PROCESS, SYSCONF },
+#endif
+#ifdef _SC_SINGLE_PROCESS
+    { "SINGLE_PROCESS", _SC_SINGLE_PROCESS, SYSCONF },
+#endif
+#ifdef _SC_NETWORKING
+    { "NETWORKING", _SC_NETWORKING, SYSCONF },
+#endif
+#ifdef _SC_READER_WRITER_LOCKS
+    { "READER_WRITER_LOCKS", _SC_READER_WRITER_LOCKS, SYSCONF },
+#endif
+#ifdef _SC_SPIN_LOCKS
+    { "SPIN_LOCKS", _SC_SPIN_LOCKS, SYSCONF },
+#endif
+#ifdef _SC_REXEXP
+    { "REGEXP", _SC_REXEXP, SYSCONF },
+#endif
+#ifdef _SC_REXEXP
+    { "REGEXP", _SC_REXEXP, SYSCONF },
+#endif
+#ifdef _SC_REXEX_VERSION
+    { "REGEX_VERSION", _SC_REXEX_VERSION, SYSCONF },
+#endif
+#ifdef _SC_SHELL
+    { "SHELL", _SC_SHELL, SYSCONF },
+#endif
+#ifdef _SC_SIGNALS
+    { "SIGNALS", _SC_SIGNALS, SYSCONF },
+#endif
+#ifdef _SC_SPAWN
+    { "SPAWN", _SC_SPAWN, SYSCONF },
+#endif
+#ifdef _SC_SPORADIC_SERVER
+    { "SPORADIC_SERVER", _SC_SPORADIC_SERVER, SYSCONF },
+#endif
+#ifdef _SC_THREAD_SPORADIC_SERVER
+    { "THREAD_SPORADIC_SERVER", _SC_THREAD_SPORADIC_SERVER, SYSCONF },
+#endif
+#ifdef _SC_SYSTEM_DATABASE
+    { "SYSTEM_DATABASE", _SC_SYSTEM_DATABASE, SYSCONF },
+#endif
+#ifdef _SC_SYSTEM_DATABASE_R
+    { "SYSTEM_DATABASE_R", _SC_SYSTEM_DATABASE_R, SYSCONF },
+#endif
+#ifdef _SC_TIMEOUTS
+    { "TIMEOUTS", _SC_TIMEOUTS, SYSCONF },
+#endif
+#ifdef _SC_TYPED_MEMORY_OBJECTS
+    { "TYPED_MEMORY_OBJECTS", _SC_TYPED_MEMORY_OBJECTS, SYSCONF },
+#endif
+#ifdef _SC_USER_GROUPS
+    { "USER_GROUPS", _SC_USER_GROUPS, SYSCONF },
+#endif
+#ifdef _SC_USER_GROUPS_R
+    { "USER_GROUPS_R", _SC_USER_GROUPS_R, SYSCONF },
+#endif
+#ifdef _SC_PBS
+    { "PBS", _SC_PBS, SYSCONF },
+#endif
+#ifdef _SC_PBS_ACCOUNTING
+    { "PBS_ACCOUNT", _SC_PBS_ACCOUNTING, SYSCONF },
+#endif
+#ifdef _SC_PBS_LOCATE
+    { "PBS_LOCATE", _SC_PBS_LOCATE, SYSCONF },
+#endif
+#ifdef _SC_PBS_TRACK
+    { "PBS_TRACK", _SC_PBS_TRACK, SYSCONF },
+#endif
+#ifdef _SC_PBS_MESSAGE
+    { "PBS_MESSAGE", _SC_PBS_MESSAGE, SYSCONF },
+#endif
+#ifdef _SC_SYMLOOP
+    { "SYMLOOP", _SC_SYMLOOP, SYSCONF },
+#endif
+
     { NULL, 0, SYSCONF }
   };
 
diff --git a/sysdeps/generic/bits/confname.h b/sysdeps/generic/bits/confname.h
index 229088d67d..3c4dbdb98c 100644
--- a/sysdeps/generic/bits/confname.h
+++ b/sysdeps/generic/bits/confname.h
@@ -1,5 +1,5 @@
 /* `sysconf', `pathconf', and `confstr' NAME values.  Generic version.
-   Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1995-1998, 2000 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
@@ -335,8 +335,93 @@ enum
 #define _SC_XOPEN_LEGACY		_SC_XOPEN_LEGACY
     _SC_XOPEN_REALTIME,
 #define _SC_XOPEN_REALTIME		_SC_XOPEN_REALTIME
-    _SC_XOPEN_REALTIME_THREADS
+    _SC_XOPEN_REALTIME_THREADS,
 #define _SC_XOPEN_REALTIME_THREADS	_SC_XOPEN_REALTIME_THREADS
+
+    _SC_ADVISORY_INFO,
+#define _SC_ADVISORY_INFO		_SC_ADVISORY_INFO
+    _SC_BARRIERS,
+#define _SC_BARRIERS			_SC_BARRIERS
+    _SC_BASE,
+#define _SC_BASE			_SC_BASE
+    _SC_C_LANG_SUPPORT,
+#define _SC_C_LANG_SUPPORT		_SC_C_LANG_SUPPORT
+    _SC_C_LANG_SUPPORT_R,
+#define _SC_C_LANG_SUPPORT_R		_SC_C_LANG_SUPPORT_R
+    _SC_CLOCK_SELECTION,
+#define _SC_CLOCK_SELECTION		_SC_CLOCK_SELECTION
+    _SC_CPUTIME,
+#define _SC_CPUTIME			_SC_CPUTIME
+    _SC_THREAD_CPUTIME,
+#define _SC_THREAD_CPUTIME		_SC_THREAD_CPUTIME
+    _SC_DEVICE_IO,
+#define _SC_DEVICE_IO			_SC_DEVICE_IO
+    _SC_DEVICE_SPECIFIC,
+#define _SC_DEVICE_SPECIFIC		_SC_DEVICE_SPECIFIC
+    _SC_DEVICE_SPECIFIC_R,
+#define _SC_DEVICE_SPECIFIC_R		_SC_DEVICE_SPECIFIC_R
+    _SC_FD_MGMT,
+#define _SC_FD_MGMT			_SC_FD_MGMT
+    _SC_FIFO,
+#define _SC_FIFO			_SC_FIFO
+    _SC_PIPE,
+#define _SC_PIPE			_SC_PIPE
+    _SC_FILE_ATTRIBUTES,
+#define _SC_FILE_ATTRIBUTES		_SC_FILE_ATTRIBUTES
+    _SC_FILE_LOCKING,
+#define _SC_FILE_LOCKING		_SC_FILE_LOCKING
+    _SC_FILE_SYSTEM,
+#define _SC_FILE_SYSTEM			_SC_FILE_SYSTEM
+    _SC_MONOTONIC_CLOCK,
+#define _SC_MONOTONIC_CLOCK		_SC_MONOTONIC_CLOCK
+    _SC_MULTIPLE_PROCESS,
+#define _SC_MULTIPLE_PROCESS		_SC_MULTIPLE_PROCESS
+    _SC_SINGLE_PROCESS,
+#define _SC_SINGLE_PROCESS		_SC_SINGLE_PROCESS
+    _SC_NETWORKING,
+#define _SC_NETWORKING			_SC_NETWORKING
+    _SC_READER_WRITER_LOCKS,
+#define _SC_READER_WRITER_LOCKS		_SC_READER_WRITER_LOCKS
+    _SC_SPIN_LOCKS,
+#define _SC_SPIN_LOCKS			_SC_SPIN_LOCKS
+    _SC_REGEXP,
+#define _SC_REGEXP			_SC_REGEXP
+    _SC_REGEX_VERSION,
+#define _SC_REGEX_VERSION		_SC_REGEX_VERSION
+    _SC_SHELL,
+#define _SC_SHELL			_SC_SHELL
+    _SC_SIGNALS,
+#define _SC_SIGNALS			_SC_SIGNALS
+    _SC_SPAWN,
+#define _SC_SPAWN			_SC_SPAWN
+    _SC_SPORADIC_SERVER,
+#define _SC_SPORADIC_SERVER		_SC_SPORADIC_SERVER
+    _SC_THREAD_SPORADIC_SERVER,
+#define _SC_THREAD_SPORADIC_SERVER	_SC_THREAD_SPORADIC_SERVER
+    _SC_SYSTEM_DATABASE,
+#define _SC_SYSTEM_DATABASE		_SC_SYSTEM_DATABASE
+    _SC_SYSTEM_DATABASE_R,
+#define _SC_SYSTEM_DATABASE_R		_SC_SYSTEM_DATABASE_R
+    _SC_TIMEOUTS,
+#define _SC_TIMEOUTS			_SC_TIMEOUTS
+    _SC_TYPED_MEMORY_OBJECTS,
+#define _SC_TYPED_MEMORY_OBJECTS	_SC_TYPED_MEMORY_OBJECTS
+    _SC_USER_GROUPS,
+#define _SC_USER_GROUPS			_SC_USER_GROUPS
+    _SC_USER_GROUPS_R,
+#define _SC_USER_GROUPS_R		_SC_USER_GROUPS_R
+    _SC_PBS,
+#define _SC_PBS				_SC_PBS
+    _SC_PBS_ACCOUNTING,
+#define _SC_PBS_ACCOUNTING		_SC_PBS_ACCOUNTING
+    _SC_PBS_LOCATE,
+#define _SC_PBS_LOCATE			_SC_PBS_LOCATE
+    _SC_PBS_MESSAGE,
+#define _SC_PBS_MESSAGE			_SC_PBS_MESSAGE
+    _SC_PBS_TRACK,
+#define _SC_PBS_TRACK			_SC_PBS_TRACK
+    _SC_SYMLOOP,
+#define _SC_SYMLOOP			_SC_SYMLOOP
   };
 
 #if (defined __USE_POSIX2 || defined __USE_UNIX98 \
diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/posix_opt.h
index 09eb5c1973..818df1f94d 100644
--- a/sysdeps/mach/hurd/bits/posix_opt.h
+++ b/sysdeps/mach/hurd/bits/posix_opt.h
@@ -1,5 +1,5 @@
 /* Define POSIX options for GNU/Hurd.
-   Copyright (C) 1998 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2000 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
@@ -60,5 +60,11 @@
 #undef _POSIX_NO_TRUNC		/* Overlong file names get error?  */
 #undef _POSIX_SYNC_IO		/* File supports O_SYNC et al?  */
 
+/* GNU libc provides regular expression handling.  */
+#define _POSIX_REGEXP	1
+
+/* We have a POSIX shell.  */
+#define _POSIX_SHELL	1
+
 
 #endif /* bits/posix_opt.h */
diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c
index e3177d0155..0f6006cdaf 100644
--- a/sysdeps/posix/sysconf.c
+++ b/sysdeps/posix/sysconf.c
@@ -817,6 +817,277 @@ __sysconf (name)
 #else
       return -1;
 #endif
+
+    case _SC_ADVISORY_INFO:
+#ifdef _POSIX_ADVISORY_INFO
+      return _POSIX_ADVISORY_INFO;
+#else
+      return -1;
+#endif
+
+    case _SC_BARRIERS:
+#ifdef _POSIX_BARRIERS
+      return _POSIX_BARRIERS;
+#else
+      return -1;
+#endif
+
+    case _SC_BASE:
+#ifdef _POSIX_BASE
+      return _POSIX_BASE;
+#else
+      return -1;
+#endif
+    case _SC_C_LANG_SUPPORT:
+#ifdef _POSIX_C_LANG_SUPPORT
+      return _POSIX_C_LANG_SUPPORT;
+#else
+      return -1;
+#endif
+    case _SC_C_LANG_SUPPORT_R:
+#ifdef _POSIX_C_LANG_SUPPORT_R
+      return _POSIX_C_LANG_SUPPORT_R;
+#else
+      return -1;
+#endif
+
+    case _SC_CLOCK_SELECTION:
+#ifdef _POSIX_CLOCK_SELECTION
+      return _POSIX_CLOCK_SELECTION;
+#else
+      return -1;
+#endif
+
+    case _SC_CPUTIME:
+#ifdef _POSIX_CPUTIME
+      return _POSIX_CPUTIME;
+#else
+      return -1;
+#endif
+
+    case _SC_DEVICE_IO:
+#ifdef _POSIX_DEVICE_IO
+      return _POSIX_DEVICE_IO;
+#else
+      return -1;
+#endif
+    case _SC_DEVICE_SPECIFIC:
+#ifdef _POSIX_DEVICE_SPCIFIC
+      return _POSIX_DEVICE_SPECIFIC;
+#else
+      return -1;
+#endif
+    case _SC_DEVICE_SPECIFIC_R:
+#ifdef _POSIX_DEVICE_SPCIFIC_R
+      return _POSIX_DEVICE_SPECIFIC_R;
+#else
+      return -1;
+#endif
+
+    case _SC_FD_MGMT:
+#ifdef _POSIX_FD_MGMT
+      return _POSIX_FD_MGMT;
+#else
+      return -1;
+#endif
+
+    case _SC_FIFO:
+#ifdef _POSIX_FIFO
+      return _POSIX_FIFO;
+#else
+      return -1;
+#endif
+    case _SC_PIPE:
+#ifdef _POSIX_PIPE
+      return _POSIX_PIPE;
+#else
+      return -1;
+#endif
+
+    case _SC_FILE_ATTRIBUTES:
+#ifdef _POSIX_FILE_ATTRIBUTES
+      return _POSIX_FILE_ATTRIBUTES;
+#else
+      return -1;
+#endif
+    case _SC_FILE_LOCKING:
+#ifdef _POSIX_FILE_LOCKING
+      return _POSIX_FILE_LOCKING;
+#else
+      return -1;
+#endif
+    case _SC_FILE_SYSTEM:
+#ifdef _POSIX_FILE_SYSTEM
+      return _POSIX_FILE_SYSTEM;
+#else
+      return -1;
+#endif
+
+    case _SC_MONOTONIC_CLOCK:
+#ifdef _POSIX_MONOTONIC_CLOCK
+      return _POSIX_MONOTONIC_CLOCK;
+#else
+      return -1;
+#endif
+
+    case _SC_MULTIPLE_PROCESS:
+#ifdef _POSIX_MULTIPLE_PROCESS
+      return _POSIX_MULTIPLE_PROCESS;
+#else
+      return -1;
+#endif
+    case _SC_SINGLE_PROCESS:
+#ifdef _POSIX_SINGLE_PROCESS
+      return _POSIX_SINGLE_PROCESS;
+#else
+      return -1;
+#endif
+
+    case _SC_NETWORKING:
+#ifdef _POSIX_NETWORKING
+      return _POSIX_NETWORKING;
+#else
+      return -1;
+#endif
+
+    case _SC_READER_WRITER_LOCKS:
+#ifdef _POSIX_READER_WRITER_LOCKS
+      return _POSIX_READER_WRITER_LOCKS;
+#else
+      return -1;
+#endif
+    case _SC_SPIN_LOCKS:
+#ifdef _POSIX_SPIN_LOCKS
+      return _POSIX_SPIN_LOCKS;
+#else
+      return -1;
+#endif
+
+    case _SC_REGEXP:
+#ifdef _POSIX_REGEXP
+      return _POSIX_REGEXP;
+#else
+      return -1;
+#endif
+    case _SC_REGEX_VERSION:
+#ifdef _POSIX_REGEX_VERSION
+      return _POSIX_REGEX_VERSION;
+#else
+      return -1;
+#endif
+
+    case _SC_SHELL:
+#ifdef _POSIX_SHELL
+      return _POSIX_SHELL;
+#else
+      return -1;
+#endif
+
+    case _SC_SIGNALS:
+#ifdef _POSUX_SIGNALS
+      return _POSIX_SIGNALS;
+#else
+      return -1;
+#endif
+
+    case _SC_SPAWN:
+#ifdef _POSIX_SPAWN
+      return _POSIX_SPAWN;
+#else
+      return -1;
+#endif
+
+    case _SC_SPORADIC_SERVER:
+#ifdef _POSIX_SPORADIC_SERVER
+      return _POSIX_SPORADIC_SERVER;
+#else
+      return -1;
+#endif
+    case _SC_THREAD_SPORADIC_SERVER:
+#ifdef _POSIX_THREAD_SPORADIC_SERVER
+      return _POSIX_THREAD_SPORADIC_SERVER;
+#else
+      return -1;
+#endif
+
+    case _SC_SYSTEM_DATABASE:
+#ifdef _POSIX_SYSTEM_DATABASE
+      return _POSIX_SYSTEM_DATABASE;
+#else
+      return -1;
+#endif
+    case _SC_SYSTEM_DATABASE_R:
+#ifdef _POSIX_SYSTEM_DATABASE_R
+      return _POSIX_SYSTEM_DATABASE_R;
+#else
+      return -1;
+#endif
+
+    case _SC_THREAD_CPUTIME:
+#ifdef _POSIX_THREAD_CPUTIME
+      return _POSIX_THREAD_CPUTIME;
+#else
+      return -1;
+#endif
+
+    case _SC_TIMEOUTS:
+#ifdef _POSIX_TIMEOUTS
+      return _POSIX_TIMEOUTS;
+#else
+      return -1;
+#endif
+
+    case _SC_TYPED_MEMORY_OBJECTS:
+#ifdef _POSIX_TYPED_MEMORY_OBJECTS
+      return _POSIX_TYPED_MEMORY_OBJECTS;
+#else
+      return -1;
+#endif
+
+    case _SC_USER_GROUPS:
+#ifdef _POSIX_USER_GROUPS
+      return _POSIX_USER_GROUPS;
+#else
+      return -1;
+#endif
+    case _SC_USER_GROUPS_R:
+#ifdef _POSIX_USER_GROUPS_R
+      return _POSIX_USER_GROUPS_R;
+#else
+      return -1;
+#endif
+
+    case _SC_PBS:
+#ifdef _POSIX2_PBS
+      return _POSIX2_PBS;
+#else
+      return -1;
+#endif
+    case _SC_PBS_ACCOUNTING:
+#ifdef _POSIX2_PBS_ACCOUNTING
+      return _POSIX2_PBS_ACCOUNTING;
+#else
+      return -1;
+#endif
+    case _SC_PBS_LOCATE:
+#ifdef _POSIX2_PBS_LOCATE
+      return _POSIX2_PBS_LOCATE;
+#else
+      return -1;
+#endif
+    case _SC_PBS_TRACK:
+#ifdef _POSIX2_PBS_TRACK
+      return _POSIX2_PBS_TRACK;
+#else
+      return -1;
+#endif
+
+    case _SC_SYMLOOP:
+#ifdef SYMLOOP_MAX
+      return SYMLOOP_MAX;
+#else
+      return -1;
+#endif
     }
 }
 
diff --git a/sysdeps/unix/i386/clock_getcpuclockid.c b/sysdeps/unix/i386/clock_getcpuclockid.c
index 1fd8ad9044..cdd662c838 100644
--- a/sysdeps/unix/i386/clock_getcpuclockid.c
+++ b/sysdeps/unix/i386/clock_getcpuclockid.c
@@ -28,7 +28,7 @@ clock_getcpuclockid (pid_t pid, clockid_t *clock_id)
     return EPERM;
 
   /* Store the number.  */
-  *clock_id = __CLOCK_HIGHRES;
+  *clock_id = CLOCK_PROCESS_CPUTIME_ID;
 
   return 0;
 }
diff --git a/sysdeps/unix/i386/i586/clock_getres.c b/sysdeps/unix/i386/i586/clock_getres.c
index dacf7f49d3..2ea21a0f8e 100644
--- a/sysdeps/unix/i386/i586/clock_getres.c
+++ b/sysdeps/unix/i386/i586/clock_getres.c
@@ -39,9 +39,15 @@ static long int nsec;
 /* We add an limitation here: we assume that the machine is not up as
    long as it takes to wrap-around the 64-bit timestamp counter.  On a
    4GHz machine it would take 136 years of uptime to wrap around so
-   this "limitation" is not severe.  */
+   this "limitation" is not severe.
+
+   We use this clock also as the monotonic clock since we don't allow
+   setting the CPU-time clock.  If this should ever change we will have
+   to separate the two.  */
 #define EXTRA_CLOCK_CASES \
-  case __CLOCK_HIGHRES:							      \
+  case CLOCK_PROCESS_CPUTIME_ID:					      \
+  case CLOCK_THREAD_CPUTIME_ID:						      \
+  case CLOCK_MONOTONIC:							      \
     {									      \
       if (__builtin_expect (nsec == 0, 0))				      \
 	{								      \
diff --git a/sysdeps/unix/i386/i586/clock_gettime.c b/sysdeps/unix/i386/i586/clock_gettime.c
index 5163d877c6..38f7c4ab15 100644
--- a/sysdeps/unix/i386/i586/clock_gettime.c
+++ b/sysdeps/unix/i386/i586/clock_gettime.c
@@ -38,9 +38,15 @@ static unsigned long long int freq;
 /* We add an limitation here: we assume that the machine is not up as
    long as it takes to wrap-around the 64-bit timestamp counter.  On a
    4GHz machine it would take 136 years of uptime to wrap around so
-   this "limitation" is not severe.  */
+   this "limitation" is not severe.
+
+   We use this clock also as the monotonic clock since we don't allow
+   setting the CPU-time clock.  If this should ever change we will have
+   to separate the two.  */
 #define EXTRA_CLOCK_CASES \
-  case __CLOCK_HIGHRES:							      \
+  case CLOCK_PROCESS_CPUTIME_ID:					      \
+  case CLOCK_THREAD_CPUTIME_ID:						      \
+  case CLOCK_MONOTONIC:							      \
     {									      \
       unsigned long long int tsc;					      \
 									      \
diff --git a/sysdeps/unix/sysv/linux/bits/posix_opt.h b/sysdeps/unix/sysv/linux/bits/posix_opt.h
index 558140b9cc..ae83e24155 100644
--- a/sysdeps/unix/sysv/linux/bits/posix_opt.h
+++ b/sysdeps/unix/sysv/linux/bits/posix_opt.h
@@ -87,4 +87,10 @@
 /* POSIX shared memory objects are implemented.  */
 #define _POSIX_SHARED_MEMORY_OBJECTS	1
 
+/* GNU libc provides regular expression handling.  */
+#define _POSIX_REGEXP	1
+
+/* We have a POSIX shell.  */
+#define _POSIX_SHELL	1
+
 #endif /* bits/posix_opt.h */
diff --git a/sysdeps/unix/sysv/linux/i386/bits/time.h b/sysdeps/unix/sysv/linux/i386/bits/time.h
index dfd3afac11..fd143634e5 100644
--- a/sysdeps/unix/sysv/linux/i386/bits/time.h
+++ b/sysdeps/unix/sysv/linux/i386/bits/time.h
@@ -47,12 +47,16 @@ typedef int __timer_t;
 
 #  ifdef __USE_POSIX199309
 /* Identifier for system-wide realtime clock.  */
-#   define CLOCK_REALTIME	0
+#   define CLOCK_REALTIME		0
+/* Monotonic clock.  */
+#   define CLOCK_MONOTONIC		1
 /* High-resolution timer from the CPU.  */
-#   define __CLOCK_HIGHRES	1
+#   define CLOCK_PROCESS_CPUTIME_ID	2
+/* Thread-specific CPU-time clock.  */
+#   define CLOCK_THREAD_CPUTIME_ID	3
 
 /* Flag to indicate time is absolute.  */
-#   define TIMER_ABSTIME	1
+#   define TIMER_ABSTIME		1
 #  endif
 
 # endif	/* bits/time.h */