Update release-README after completing the 2.43 release.
[binutils-gdb.git] / sim / testsuite / cris / c / clone4.c
blobc2e684ca871cbb4ee725fa1417f0c021e83f5a7b
1 /* Check that TRT happens when we reach the #threads implementation limit.
2 #progos: linux
3 */
5 #include <stddef.h>
6 #include <stdlib.h>
7 #include <stdio.h>
8 #include <limits.h>
9 #include <unistd.h>
10 #include <sched.h>
11 #include <errno.h>
12 #include <sys/types.h>
13 #include <sys/wait.h>
15 int
16 process (void *arg)
18 int i;
20 for (i = 0; i < 500; i++)
21 if (sched_yield ())
22 abort ();
24 return 0;
27 int
28 main (void)
30 int pid;
31 int i;
32 int stacksize = 16384;
34 for (i = 0; i < 1000; i++)
36 char *stack = malloc (stacksize);
37 if (stack == NULL)
38 abort ();
40 pid = clone (process, (char *) stack + stacksize - 64,
41 (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND)
42 | SIGCHLD, "ab");
43 if (pid <= 0)
45 /* FIXME: Read sysconf instead of magic number. */
46 if (i < 60)
48 fprintf (stderr, "Bad clone %d\n", pid);
49 abort ();
52 if (errno == EAGAIN)
54 printf ("pass\n");
55 exit (0);
60 abort ();