From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1504 invoked by alias); 10 May 2004 16:59:16 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 1487 invoked from network); 10 May 2004 16:59:16 -0000 Received: from unknown (HELO sunsite.ms.mff.cuni.cz) (195.113.15.26) by sourceware.org with SMTP; 10 May 2004 16:59:16 -0000 Received: from sunsite.ms.mff.cuni.cz (sunsite.mff.cuni.cz [127.0.0.1]) by sunsite.ms.mff.cuni.cz (8.12.8/8.12.8) with ESMTP id i4AEkf3j002644; Mon, 10 May 2004 16:46:41 +0200 Received: (from jakub@localhost) by sunsite.ms.mff.cuni.cz (8.12.8/8.12.8/Submit) id i4AEkecG002637; Mon, 10 May 2004 16:46:40 +0200 Date: Mon, 10 May 2004 16:59:00 -0000 From: Jakub Jelinek To: Ulrich Drepper Cc: Glibc hackers Subject: [PATCH] Fix sysconf Message-ID: <20040510144640.GV5191@sunsite.ms.mff.cuni.cz> Reply-To: Jakub Jelinek Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i X-SW-Source: 2004-05/txt/msg00020.txt.bz2 Hi! The standard says that say _POSIX_REALTIME_SIGNALS shall be undefined or defined to either -1, 0 or 200112L and that sysconf (_SC_REALTIME_SIGNALS) shall return either -1 or 200112L. For many features we return that, but for many sysconf returns 1. The following patch changes those which have "shall return either -1 or 200112L" wording. I wonder if it shouldn't be #if _POSIX_REALTIME_SIGNALS > 0 return _POSIX_REALTIME_SIGNALS; #else return -1; #endif instead for the feature macros, as e.g. sysconf (_SC_MONOTONIC_CLOCK) will otherwise return 0 on glibc built without _NR_clock_getres defined in asm/unistd.h. 2004-05-10 Jakub Jelinek * sysdeps/posix/sysconf.c (__sysconf) : Return _POSIX_* value instead of 1. * sysdeps/unix/sysv/linux/sysconf.c (__sysconf) : Return _POSIX_VERSION instead of 1. nptl/ * sysdeps/unix/sysv/linux/i386/sysconf.c (__sysconf): Return _POSIX_VERSION instead of 1. --- libc/sysdeps/unix/sysv/linux/sysconf.c.jj 2004-04-13 10:42:55.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/sysconf.c 2004-05-10 18:47:26.977149003 +0200 @@ -44,7 +44,7 @@ __sysconf (int name) INTERNAL_SYSCALL_DECL (err); int r; r = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts); - return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : 1; + return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : _POSIX_VERSION; } #endif --- libc/sysdeps/posix/sysconf.c.jj 2004-03-13 10:23:15.000000000 +0100 +++ libc/sysdeps/posix/sysconf.c 2004-05-10 17:51:16.810126812 +0200 @@ -97,98 +97,98 @@ __sysconf (name) case _SC_REALTIME_SIGNALS: #ifdef _POSIX_REALTIME_SIGNALS - return 1; + return _POSIX_REALTIME_SIGNALS; #else return -1; #endif case _SC_PRIORITY_SCHEDULING: #ifdef _POSIX_PRIORITY_SCHEDULING - return 1; + return _POSIX_PRIORITY_SCHEDULING; #else return -1; #endif case _SC_TIMERS: #ifdef _POSIX_TIMERS - return 1; + return _POSIX_TIMERS; #else return -1; #endif case _SC_ASYNCHRONOUS_IO: #ifdef _POSIX_ASYNCHRONOUS_IO - return 1; + return _POSIX_ASYNCHRONOUS_IO; #else return -1; #endif case _SC_PRIORITIZED_IO: #ifdef _POSIX_PRIORITIZED_IO - return 1; + return _POSIX_PRIORITIZED_IO; #else return -1; #endif case _SC_SYNCHRONIZED_IO: #ifdef _POSIX_SYNCHRONIZED_IO - return 1; + return _POSIX_SYNCHRONIZED_IO; #else return -1; #endif case _SC_FSYNC: #ifdef _POSIX_FSYNC - return 1; + return _POSIX_FSYNC; #else return -1; #endif case _SC_MAPPED_FILES: #ifdef _POSIX_MAPPED_FILES - return 1; + return _POSIX_MAPPED_FILES; #else return -1; #endif case _SC_MEMLOCK: #ifdef _POSIX_MEMLOCK - return 1; + return _POSIX_MEMLOCK; #else return -1; #endif case _SC_MEMLOCK_RANGE: #ifdef _POSIX_MEMLOCK_RANGE - return 1; + return _POSIX_MEMLOCK_RANGE; #else return -1; #endif case _SC_MEMORY_PROTECTION: #ifdef _POSIX_MEMORY_PROTECTION - return 1; + return _POSIX_MEMORY_PROTECTION; #else return -1; #endif case _SC_MESSAGE_PASSING: #ifdef _POSIX_MESSAGE_PASSING - return 1; + return _POSIX_MESSAGE_PASSING; #else return -1; #endif case _SC_SEMAPHORES: #ifdef _POSIX_SEMAPHORES - return 1; + return _POSIX_SEMAPHORES; #else return -1; #endif case _SC_SHARED_MEMORY_OBJECTS: #ifdef _POSIX_SHARED_MEMORY_OBJECTS - return 1; + return _POSIX_SHARED_MEMORY_OBJECTS; #else return -1; #endif @@ -507,14 +507,14 @@ __sysconf (name) /* POSIX 1003.1c (POSIX Threads). */ case _SC_THREADS: #ifdef _POSIX_THREADS - return 1; + return _POSIX_THREADS; #else return -1; #endif case _SC_THREAD_SAFE_FUNCTIONS: #ifdef _POSIX_THREAD_SAFE_FUNCTIONS - return 1; + return _POSIX_THREAD_SAFE_FUNCTIONS; #else return -1; #endif @@ -569,42 +569,42 @@ __sysconf (name) case _SC_THREAD_ATTR_STACKADDR: #ifdef _POSIX_THREAD_ATTR_STACKADDR - return 1; + return _POSIX_THREAD_ATTR_STACKADDR; #else return -1; #endif case _SC_THREAD_ATTR_STACKSIZE: #ifdef _POSIX_THREAD_ATTR_STACKSIZE - return 1; + return _POSIX_THREAD_ATTR_STACKSIZE; #else return -1; #endif case _SC_THREAD_PRIORITY_SCHEDULING: #ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - return 1; + return _POSIX_THREAD_PRIORITY_SCHEDULING; #else return -1; #endif case _SC_THREAD_PRIO_INHERIT: #ifdef _POSIX_THREAD_PRIO_INHERIT - return 1; + return _POSIX_THREAD_PRIO_INHERIT; #else return -1; #endif case _SC_THREAD_PRIO_PROTECT: #ifdef _POSIX_THREAD_PRIO_PROTECT - return 1; + return _POSIX_THREAD_PRIO_PROTECT; #else return -1; #endif case _SC_THREAD_PROCESS_SHARED: #ifdef _POSIX_THREAD_PROCESS_SHARED - return 1; + return _POSIX_THREAD_PROCESS_SHARED; #else return -1; #endif --- libc/nptl/sysdeps/unix/sysv/linux/i386/sysconf.c.jj 2004-05-10 10:32:50.000000000 +0200 +++ libc/nptl/sysdeps/unix/sysv/linux/i386/sysconf.c 2004-05-10 18:47:43.728147006 +0200 @@ -41,7 +41,7 @@ __sysconf (int name) return -1; # else extern int __atomic_has_cmpxchg attribute_hidden; - return __atomic_has_cmpxchg ? 1 : -1; + return __atomic_has_cmpxchg ? _POSIX_VERSION : -1; # endif } Jakub