1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /* 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"
|