diff options
Diffstat (limited to 'sim/testsuite/cris/c/sig9.c')
-rw-r--r-- | sim/testsuite/cris/c/sig9.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/sim/testsuite/cris/c/sig9.c b/sim/testsuite/cris/c/sig9.c new file mode 100644 index 00000000000..c86681b4322 --- /dev/null +++ b/sim/testsuite/cris/c/sig9.c @@ -0,0 +1,36 @@ +/* Check that TRT happens at an non-abort ignored signal, more than one thread. +#notarget: cris*-*-elf +#cc: additional_flags=-pthread +*/ + +#include <stdlib.h> +#include <stddef.h> +#include <stdio.h> +#include <unistd.h> +#include <pthread.h> +#include <sys/types.h> +#include <signal.h> + +static void * +process (void *arg) +{ + int i; + for (i = 0; i < 100; i++) + sched_yield (); + return NULL; +} + +int main (void) +{ + pthread_t th_a; + int retcode; + void *retval; + signal (SIGALRM, SIG_IGN); + if (pthread_create (&th_a, NULL, process, (void *) "a") == 0) + kill (getpid (), SIGALRM); + retcode = pthread_join (th_a, &retval); + if (retcode != 0 || retval != NULL) + abort (); + printf ("pass\n"); + exit (0); +} |