From 1683daeb2778c6263f2680cf98551679db7e781f Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 18 Apr 2004 02:37:56 +0000 Subject: Update. 2004-04-17 Jakub Jelinek * rt/Makefile (tests): Add tst-mqueue8. * rt/tst-mqueue8.c: New test. * sysdeps/unix/sysv/linux/s390/Makefile (librt-routines): Add rt-sysdep. * sysdeps/unix/sysv/linux/s390/rt-sysdep.S: New file. --- linuxthreads/ChangeLog | 15 +++++++++++++++ linuxthreads/sysdeps/pthread/timer_create.c | 5 +---- linuxthreads/sysdeps/pthread/timer_gettime.c | 10 ++++++++-- linuxthreads/sysdeps/pthread/timer_routines.c | 10 +++++++--- linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c | 1 + linuxthreads/sysdeps/x86_64/tls.h | 3 +++ 6 files changed, 35 insertions(+), 9 deletions(-) (limited to 'linuxthreads') diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 48a873c47b..45d38b383b 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,18 @@ +2004-04-17 Jakub Jelinek + + * sysdeps/x86_64/tls.h [!__ASSEMBLER__]: Include tcb-offsets.h. + + * sysdeps/pthread/timer_gettime.c (timer_gettime): For expired timer + return it_value { 0, 0 }. + * sysdeps/pthread/timer_create.c (timer_create): Handle SIGEV_NONE + like SIGEV_SIGNAL. + * sysdeps/pthread/timer_routines.c (thread_expire_timer): Remove + assertion for SIGEV_NONE. + (thread_attr_compare): Compare all attributes, not just a partial + subset. + + * sysdeps/unix/sysv/linux/mq_notify.c: Include stdlib.h. + 2004-04-17 Ulrich Drepper * semaphore.h (SEM_VALUE_MAX): Just use a plain number. diff --git a/linuxthreads/sysdeps/pthread/timer_create.c b/linuxthreads/sysdeps/pthread/timer_create.c index d63cda0687..3fde4c74c9 100644 --- a/linuxthreads/sysdeps/pthread/timer_create.c +++ b/linuxthreads/sysdeps/pthread/timer_create.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2003 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kaz Kylheku . @@ -91,9 +91,6 @@ timer_create (clock_id, evp, timerid) switch (__builtin_expect (newtimer->event.sigev_notify, SIGEV_SIGNAL)) { case SIGEV_NONE: - /* This is a strange choice! */ - break; - case SIGEV_SIGNAL: /* We have a global thread for delivering timed signals. If it is not running, try to start it up. */ diff --git a/linuxthreads/sysdeps/pthread/timer_gettime.c b/linuxthreads/sysdeps/pthread/timer_gettime.c index 99a080311c..723a61632f 100644 --- a/linuxthreads/sysdeps/pthread/timer_gettime.c +++ b/linuxthreads/sysdeps/pthread/timer_gettime.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kaz Kylheku . @@ -54,7 +54,13 @@ timer_gettime (timerid, value) if (armed) { clock_gettime (clock, &now); - timespec_sub (&value->it_value, &expiry, &now); + if (timespec_compare (&now, &expiry) < 0) + timespec_sub (&value->it_value, &expiry, &now); + else + { + value->it_value.tv_sec = 0; + value->it_value.tv_nsec = 0; + } } else { diff --git a/linuxthreads/sysdeps/pthread/timer_routines.c b/linuxthreads/sysdeps/pthread/timer_routines.c index 36c26b2a01..6e3797d0b5 100644 --- a/linuxthreads/sysdeps/pthread/timer_routines.c +++ b/linuxthreads/sysdeps/pthread/timer_routines.c @@ -1,5 +1,5 @@ /* Helper code for POSIX timer implementation on LinuxThreads. - Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kaz Kylheku . @@ -318,7 +318,6 @@ thread_expire_timer (struct thread_node *self, struct timer_node *timer) switch (__builtin_expect (timer->event.sigev_notify, SIGEV_SIGNAL)) { case SIGEV_NONE: - assert (! "timer_create should never have created such a timer"); break; case SIGEV_SIGNAL: @@ -517,10 +516,15 @@ thread_attr_compare (const pthread_attr_t *left, const pthread_attr_t *right) { return (left->__detachstate == right->__detachstate && left->__schedpolicy == right->__schedpolicy + && left->__guardsize == right->__guardsize && (left->__schedparam.sched_priority == right->__schedparam.sched_priority) && left->__inheritsched == right->__inheritsched - && left->__scope == right->__scope); + && left->__scope == right->__scope + && left->__stacksize == right->__stacksize + && left->__stackaddr_set == right->__stackaddr_set + && (left->__stackaddr_set + || left->__stackaddr == right->__stackaddr)); } diff --git a/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c b/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c index 2714fadb9d..e9c2b6e79a 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c +++ b/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include diff --git a/linuxthreads/sysdeps/x86_64/tls.h b/linuxthreads/sysdeps/x86_64/tls.h index 124c849dc8..63feebdb2c 100644 --- a/linuxthreads/sysdeps/x86_64/tls.h +++ b/linuxthreads/sysdeps/x86_64/tls.h @@ -41,6 +41,9 @@ typedef struct void *self; /* Pointer to the thread descriptor. */ int multiple_threads; } tcbhead_t; + +#else /* __ASSEMBLER__ */ +# include #endif -- cgit 1.4.1