mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
2002-04-08 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/timer_getoverr.c: Return real overrun. * sysdeps/pthread/posix-timer.h (struct timer_node): Add overrun_count. * sysdeps/pthread/timer_routines.c (thread_func): Schedule next timeout based on previous one and not on current time. Count overruns. Patch by Eric F. Sorton <eric@cctcorp.com>. * sysdeps/unix/sysv/linux/bits/local_lim.h: Add DELAYTIMER_MAX. (FLOATING_STACKS, ARCH_STACK_MAX_SIZE): Defined.
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/* Helper code for POSIX timer implementation on LinuxThreads.
|
||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Kaz Kylheku <kaz@ashi.footprints.net>.
|
||||
|
||||
@ -413,8 +413,16 @@ thread_func (void *arg)
|
||||
if (__builtin_expect (timer->value.it_interval.tv_sec, 0) != 0
|
||||
|| timer->value.it_interval.tv_nsec != 0)
|
||||
{
|
||||
timespec_add (&timer->expirytime, &now,
|
||||
timer->overrun_count = 0;
|
||||
timespec_add (&timer->expirytime, &timer->expirytime,
|
||||
&timer->value.it_interval);
|
||||
while (timespec_compare(&timer->expirytime, &now) < 0)
|
||||
{
|
||||
timespec_add (&timer->expirytime, &timer->expirytime,
|
||||
&timer->value.it_interval);
|
||||
if (timer->overrun_count < DELAYTIMER_MAX)
|
||||
++timer->overrun_count;
|
||||
}
|
||||
__timer_thread_queue_timer (self, timer);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user