From a7f6c66ec36b297bead2e4d12de1802f757905ed Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 29 Jul 2003 09:32:03 +0000 Subject: * rt/tst-timer2.c: New file. * rt/Makefile (tests): Add it. --- rt/Makefile | 2 +- rt/tst-timer2.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 rt/tst-timer2.c (limited to 'rt') diff --git a/rt/Makefile b/rt/Makefile index 9f49a02e0c..47167890a0 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -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 diff --git a/rt/tst-timer2.c b/rt/tst-timer2.c new file mode 100644 index 0000000000..74ccc492b0 --- /dev/null +++ b/rt/tst-timer2.c @@ -0,0 +1,62 @@ +/* Test for crashing bugs when trying to create too many timers. */ + +#include +#include +#include +#include +#include +#include + +#if _POSIX_THREADS +# include + +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" -- cgit v1.2.3