mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
* rt/tst-timer2.c: New file.
* rt/Makefile (tests): Add it.
This commit is contained in:
parent
172ce013bd
commit
a7f6c66ec3
@ -1,3 +1,8 @@
|
||||
2003-07-29 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* rt/tst-timer2.c: New file.
|
||||
* rt/Makefile (tests): Add it.
|
||||
|
||||
2003-07-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* elf/dl-support.c (_dl_hwcap): Add nocommon attribute.
|
||||
|
@ -1,3 +1,10 @@
|
||||
2003-06-19 Daniel Jacobowitz <drow@mvista.com>
|
||||
|
||||
* sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
|
||||
before __timer_dealloc.
|
||||
* sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
|
||||
Don't call list_unlink.
|
||||
|
||||
2003-07-29 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
|
||||
|
@ -178,7 +178,10 @@ timer_create (clock_id, evp, timerid)
|
||||
if (thread != NULL)
|
||||
__timer_thread_dealloc (thread);
|
||||
if (newtimer != NULL)
|
||||
__timer_dealloc (newtimer);
|
||||
{
|
||||
timer_delref (newtimer);
|
||||
__timer_dealloc (newtimer);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock (&__timer_mutex);
|
||||
|
@ -538,10 +538,7 @@ __timer_thread_find_matching (const pthread_attr_t *desired_attr,
|
||||
|
||||
if (thread_attr_compare (desired_attr, &candidate->attr)
|
||||
&& desired_clock_id == candidate->clock_id)
|
||||
{
|
||||
list_unlink (iter);
|
||||
return candidate;
|
||||
}
|
||||
return candidate;
|
||||
|
||||
iter = list_next (iter);
|
||||
}
|
||||
|
@ -1,3 +1,10 @@
|
||||
2003-06-19 Daniel Jacobowitz <drow@mvista.com>
|
||||
|
||||
* sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
|
||||
before __timer_dealloc.
|
||||
* sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
|
||||
Don't call list_unlink.
|
||||
|
||||
2003-07-29 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
|
||||
|
@ -178,7 +178,10 @@ timer_create (clock_id, evp, timerid)
|
||||
if (thread != NULL)
|
||||
__timer_thread_dealloc (thread);
|
||||
if (newtimer != NULL)
|
||||
__timer_dealloc (newtimer);
|
||||
{
|
||||
timer_delref (newtimer);
|
||||
__timer_dealloc (newtimer);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock (&__timer_mutex);
|
||||
|
@ -296,7 +296,7 @@ thread_cleanup (void *val)
|
||||
thread->current_timer = 0;
|
||||
|
||||
if (list_isempty (&thread->timer_queue))
|
||||
__timer_thread_dealloc (thread);
|
||||
__timer_thread_dealloc (thread);
|
||||
else
|
||||
(void) __timer_thread_start (thread);
|
||||
|
||||
@ -540,10 +540,7 @@ __timer_thread_find_matching (const pthread_attr_t *desired_attr,
|
||||
|
||||
if (thread_attr_compare (desired_attr, &candidate->attr)
|
||||
&& desired_clock_id == candidate->clock_id)
|
||||
{
|
||||
list_unlink (iter);
|
||||
return candidate;
|
||||
}
|
||||
return candidate;
|
||||
|
||||
iter = list_next (iter);
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ librt-routines = $(aio-routines) \
|
||||
$(clock-routines) $(timer-routines) \
|
||||
$(shm-routines)
|
||||
|
||||
tests := tst-shm tst-clock tst-clock_nanosleep tst-timer \
|
||||
tests := tst-shm tst-clock tst-clock_nanosleep tst-timer tst-timer2 \
|
||||
tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
|
||||
tst-aio7
|
||||
|
||||
|
62
rt/tst-timer2.c
Normal file
62
rt/tst-timer2.c
Normal file
@ -0,0 +1,62 @@
|
||||
/* Test for crashing bugs when trying to create too many timers. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <signal.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#if _POSIX_THREADS
|
||||
# include <pthread.h>
|
||||
|
||||
void
|
||||
thread (union sigval arg)
|
||||
{
|
||||
puts ("Timeout");
|
||||
}
|
||||
|
||||
int
|
||||
do_test (void)
|
||||
{
|
||||
int i, res;
|
||||
timer_t timerId;
|
||||
struct itimerspec itval;
|
||||
struct sigevent sigev;
|
||||
|
||||
itval.it_interval.tv_sec = 2;
|
||||
itval.it_interval.tv_nsec = 0;
|
||||
itval.it_value.tv_sec = 2;
|
||||
itval.it_value.tv_nsec = 0;
|
||||
|
||||
sigev.sigev_notify = SIGEV_THREAD;
|
||||
sigev.sigev_signo = SIGRTMIN;
|
||||
sigev.sigev_notify_function = thread;
|
||||
sigev.sigev_notify_attributes = 0;
|
||||
sigev.sigev_value.sival_ptr = (void *) &timerId;
|
||||
|
||||
for (i = 0; i < 100; i++)
|
||||
{
|
||||
printf ("cnt = %d\n", i);
|
||||
|
||||
if (timer_create (CLOCK_REALTIME, &sigev, &timerId) < 0)
|
||||
perror ("timer_create");
|
||||
|
||||
res = timer_settime (timerId, 0, &itval, NULL);
|
||||
if (res < 0)
|
||||
perror ("timer_settime");
|
||||
|
||||
res = timer_delete (timerId);
|
||||
if (res < 0)
|
||||
perror ("timer_delete");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
# define TEST_FUNCTION do_test ()
|
||||
#else
|
||||
# define TEST_FUNCTION 0
|
||||
#endif
|
||||
|
||||
#include "../test-skeleton.c"
|
Loading…
Reference in New Issue
Block a user