diff options
author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-08-18 03:46:56 +0000 |
---|---|---|
committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2006-08-18 03:46:56 +0000 |
commit | c7fc697dcf05e3a596292635945b51d1bb1a5b51 (patch) | |
tree | af31d085d2e481c8ae7c5ab379c88b603e8bd3d3 /test/nptl/tst-timer2.c | |
parent | 778809e5888b4b824b83c2ed7646dc225ce529b2 (diff) | |
download | uClibc-alpine-c7fc697dcf05e3a596292635945b51d1bb1a5b51.tar.bz2 uClibc-alpine-c7fc697dcf05e3a596292635945b51d1bb1a5b51.tar.xz |
Add new tests for POSIX timers and message queues.
Diffstat (limited to 'test/nptl/tst-timer2.c')
-rw-r--r-- | test/nptl/tst-timer2.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/nptl/tst-timer2.c b/test/nptl/tst-timer2.c new file mode 100644 index 000000000..60026c1ef --- /dev/null +++ b/test/nptl/tst-timer2.c @@ -0,0 +1,65 @@ +/* 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"); + continue; + } + + 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" |