From 33362918bffa49495556d4f1eb5fc4e5a0808398 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 21 Nov 2005 04:48:19 +0000 Subject: * sim/cris: New directory with C and assembly tests for the CRIS simulator. --- sim/testsuite/sim/cris/c/thread4.c | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 sim/testsuite/sim/cris/c/thread4.c (limited to 'sim/testsuite/sim/cris/c/thread4.c') diff --git a/sim/testsuite/sim/cris/c/thread4.c b/sim/testsuite/sim/cris/c/thread4.c new file mode 100644 index 00000000000..cfa23279c50 --- /dev/null +++ b/sim/testsuite/sim/cris/c/thread4.c @@ -0,0 +1,50 @@ +/* Compiler options: +#notarget: cris*-*-elf +#cc: additional_flags=-pthread +#output: abb ok\n + + Testing a pthread corner case. Output will change with glibc + releases. */ + +#include +#include +#include +#include +#include + +static void * +process (void *arg) +{ + int i; + + if (pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL) != 0) + abort (); + write (2, "a", 1); + for (i = 0; i < 10; i++) + { + sched_yield (); + pthread_testcancel (); + write (2, "b", 1); + } + return NULL; +} + +int +main (void) +{ + int retcode; + pthread_t th_a; + void *retval; + + retcode = pthread_create (&th_a, NULL, process, NULL); + sched_yield (); + sched_yield (); + sched_yield (); + sched_yield (); + retcode = pthread_cancel (th_a); + retcode = pthread_join (th_a, &retval); + if (retcode != 0) + abort (); + fprintf (stderr, " ok\n"); + return 0; +} -- cgit v1.2.1