glibc/rt/tst-timer3.c
Ulrich Drepper efa8adf5f9 Update.
2004-04-16  Jakub Jelinek  <jakub@redhat.com>

	* misc/syslog.c (vsyslog): Avoid freeing failbuf.

2004-04-15  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (tests): Add tst-timer4.
	* rt/tst-timer4.c: New test.

2004-04-15  Jakub Jelinek  <jakub@redhat.com>

	* rt/tst-mqueue5.c (rtmin_code): New variable.
	(rtmin_handler): Set it.
	(thr, do_child, do_test): Also check rtmin_code.

2004-04-14  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (tests): Add tst-mqueue7.
	(tst-mqueue7-ARGS): Set.
	* rt/tst-mqueue7.c: New test.

2004-04-13  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (tests): Add tst-mqueue5 and tst-mqueue6.
	* rt/tst-mqueue1.c (do_one_test): Bitwise or check_attrs () into
	result instead of replacing it.  Use TEMP_FAILURE_RETRY around
	waitpid, kill child if waitpid failed.
	(do_test): Bitwise or check_attrs () into result instead of replacing
	it.  Change temp mq name.
	* rt/tst-mqueue5.c: New test.
	* rt/tst-mqueue6.c: New test.
	* rt/tst-mqueue.h: Include stdio.h, unistd.h, sys/uio.h.
	(temp_mq_list, delete_temp_mqs): Remove.
	(temp_mq_fd): New variable.
	(do_cleanup, do_prepare): New functions.
	(add_temp_mq): Rewritten to use a temp file.
	(PREPARE): Define.
	(CLEANUP_HANDLER): Change to do_cleanup ().

	* rt/tst-timer3.c: Don't fail if _POSIX_THREADS is not available.

2004-04-13  Thorsten Kukuk  <kukuk@suse.de>

	* sysdeps/s390/ffs.c: Include limits.h

2004-04-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/unix/sysv/linux/sh/sysdep.h (SUBSTITUTE_ARGS_1,
	SUBSTITUTE_ARGS_2, SUBSTITUTE_ARGS_3, SUBSTITUTE_ARGS_4,
	SUBSTITUTE_ARGS_5, SUBSTITUTE_ARGS_6, SUBSTITUTE_ARGS_7): Load
	argument values into temporary variables.
2004-04-16 20:44:32 +00:00

87 lines
1.7 KiB
C

/* Test for bogus per-thread deletion of timers. */
#include <stdio.h>
#include <error.h>
#include <time.h>
#include <signal.h>
#include <stdint.h>
#include <string.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#if _POSIX_THREADS
# include <pthread.h>
/* Creating timers in another thread should work too. */
static void *
do_timer_create (void *arg)
{
struct sigevent *const sigev = arg;
timer_t *const timerId = sigev->sigev_value.sival_ptr;
if (timer_create (CLOCK_REALTIME, sigev, timerId) < 0)
{
printf ("timer_create: %m\n");
return NULL;
}
return timerId;
}
static 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_SIGNAL;
sigev.sigev_signo = SIGALRM;
sigev.sigev_value.sival_ptr = (void *) &timerId;
for (i = 0; i < 100; i++)
{
printf ("cnt = %d\n", i);
pthread_t thr;
res = pthread_create (&thr, NULL, &do_timer_create, &sigev);
if (res)
{
printf ("pthread_create: %s\n", strerror (res));
continue;
}
void *val;
res = pthread_join (thr, &val);
if (res)
{
printf ("pthread_join: %s\n", strerror (res));
continue;
}
if (val == NULL)
continue;
res = timer_settime (timerId, 0, &itval, NULL);
if (res < 0)
printf ("timer_settime: %m\n");
res = timer_delete (timerId);
if (res < 0)
printf ("timer_delete: %m\n");
}
return 0;
}
# define TEST_FUNCTION do_test ()
#else
# define TEST_FUNCTION 0
#endif
#include "../test-skeleton.c"