1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00
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:
Ulrich Drepper
2002-04-09 02:10:21 +00:00
parent 776cc5d31c
commit 14b2ede5b2
5 changed files with 26 additions and 8 deletions

View File

@ -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);
}