diff options
Diffstat (limited to 'linuxthreads/sysdeps/pthread')
-rw-r--r-- | linuxthreads/sysdeps/pthread/timer_create.c | 5 | ||||
-rw-r--r-- | linuxthreads/sysdeps/pthread/timer_gettime.c | 10 | ||||
-rw-r--r-- | linuxthreads/sysdeps/pthread/timer_routines.c | 10 |
3 files changed, 16 insertions, 9 deletions
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 <kaz@ashi.footprints.net>. @@ -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 <kaz@ashi.footprints.net>. @@ -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 <kaz@ashi.footprints.net>. @@ -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)); } |