diff options
-rw-r--r-- | CONFORMANCE | 65 | ||||
-rw-r--r-- | nptl/ChangeLog | 6 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/timer_routines.c | 17 |
3 files changed, 65 insertions, 23 deletions
diff --git a/CONFORMANCE b/CONFORMANCE index 1450691a80..012a487a95 100644 --- a/CONFORMANCE +++ b/CONFORMANCE @@ -13,41 +13,64 @@ The hdrchk test suite is available from the Open Group at ftp://ftp.rdg.opengroup.org/pub/unsupported/stdtools/hdrchk/ -I've last run the suite on 2000-08-13 on a Linux/ix86 system with the -following results [*]: +I've last run the suite on 2004-04-17 on a Linux/x86 system running +a Fedora Core 2 test 2 + updates with the following results [*]: FIPS No reported problems POSIX90 No reported problems - XPG3 No reported problems + XPG3 Prototypes are now in the correct header file - XPG4 No reported problems +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*** Starting unistd.h +Missing: extern char * cuserid(); +Missing: extern int rename(); +*** Completed unistd.h +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - POSIX96 Same as for UNIX98 (see below). - UNIX98 The message queue implementation is missing: + XPG4 Prototype is now in the correct header file + and the _POSIX2_C_VERSION symbol has been removed ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/****** <mqueue.h> - Missing include file ******/ -/****** Start of Definitions for file mqueue.h ******/ -extern int mq_close(); -extern int mq_getattr(); -extern int mq_notify(); -extern mqd_t mq_open(); -extern ssize_t mq_receive(); -extern int mq_send(); -extern int mq_setattr(); -extern int mq_unlink(); -typedef <type> mqd_t; -struct mq_attr { <members> }; -struct sigevent { <members> }; -/****** End of Definitions for file mqueue.h ******/ +*** Starting unistd.h +Missing: extern char * cuserid(); +Missing: #define _POSIX2_C_VERSION (-1L) +*** Completed unistd.h ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + POSIX96 Prototype moved + (using "base realtime threads" subsets) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*** Starting unistd.h +Missing: extern int pthread_atfork(); +*** Completed unistd.h +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + UNIX98 Prototypes moved and _POSIX2_C_VERSION removed + (using "base realtime threads mse lfs" subset) + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*** Starting unistd.h +Missing: extern char * cuserid(); +Missing: #define _POSIX2_C_VERSION (-1L) +Missing: extern int pthread_atfork(); +*** Completed unistd.h +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +That means all the reported issues are due to the headers having been +cleaned up for recent POSIX/Unix specification versions. Duplicated +prototypes have been removed and obsolete symbols have been removed. +Which means that as far as the tests performed by the script go, the +headers files comply to the current POSIX/Unix specification. + + [*] Since the scripts are not clever enough for the way gcc handles include files (namely, putting some of them in gcc-local directory) I copied over the iso646.h, float.h, and stddef.h headers and ignored the -problems resulting from the splitted limits.h file). +problems resulting from the split limits.h file). Technical C standards conformance issues in glibc diff --git a/nptl/ChangeLog b/nptl/ChangeLog index c37f1c9c09..b0eea29d94 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2004-04-15 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/unix/sysv/linux/timer_routines.c: Include errno.h. + (timer_helper_thread): Use inline rt_sigtimedwait syscall instead + of calling sigwaitinfo. + 2004-04-16 Ulrich Drepper <drepper@redhat.com> * allocatestack.c (allocate_stack): Set reported_guardsize diff --git a/nptl/sysdeps/unix/sysv/linux/timer_routines.c b/nptl/sysdeps/unix/sysv/linux/timer_routines.c index b0d6ef91bf..f0a68e8f4d 100644 --- a/nptl/sysdeps/unix/sysv/linux/timer_routines.c +++ b/nptl/sysdeps/unix/sysv/linux/timer_routines.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003. @@ -17,6 +17,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include <errno.h> #include <setjmp.h> #include <signal.h> #include <stdbool.h> @@ -61,7 +62,19 @@ timer_helper_thread (void *arg) { siginfo_t si; - if (sigwaitinfo (&ss, &si) > 0) + /* sigwaitinfo cannot be used here, since it deletes + SIGCANCEL == SIGTIMER from the set. */ + + int oldtype = LIBC_CANCEL_ASYNC (); + + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + int result = INLINE_SYSCALL (rt_sigtimedwait, 4, &ss, &si, NULL, + _NSIG / 8); + + LIBC_CANCEL_RESET (oldtype); + + if (result > 0) { if (si.si_code == SI_TIMER) { |