]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.threads/manythreads.c
config:
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.threads / manythreads.c
CommitLineData
899d9e3a 1/* Manythreads test program.
0fb0cc75 2 Copyright 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
899d9e3a
JJ
3
4 Written by Jeff Johnston <jjohnstn@redhat.com>
5 Contributed by Red Hat
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
899d9e3a 12 (at your option) any later version.
a9762ec7 13
899d9e3a
JJ
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
a9762ec7 18
899d9e3a 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
899d9e3a 21
7339a42e
JJ
22#include <pthread.h>
23#include <stdio.h>
1e9f977e 24#include <limits.h>
7339a42e
JJ
25
26void *
27thread_function (void *arg)
28{
5bd2f6e2 29 int x = * (int *) arg;
7339a42e
JJ
30
31 printf ("Thread <%d> executing\n", x);
32
33 return NULL;
34}
35
36int
37main (int argc, char **argv)
38{
39 pthread_attr_t attr;
40 pthread_t threads[256];
5bd2f6e2 41 int args[256];
7339a42e
JJ
42 int i, j;
43
44 pthread_attr_init (&attr);
17592de3
PA
45
46#ifdef PTHREAD_STACK_MIN
0057022f 47 pthread_attr_setstacksize (&attr, 2*PTHREAD_STACK_MIN);
17592de3 48#endif
7339a42e
JJ
49
50 /* Create a ton of quick-executing threads, then wait for them to
51 complete. */
52 for (i = 0; i < 1000; ++i)
53 {
54 for (j = 0; j < 256; ++j)
55 {
5bd2f6e2
DJ
56 args[j] = i * 1000 + j;
57 pthread_create (&threads[j], &attr, thread_function, &args[j]);
7339a42e
JJ
58 }
59
60 for (j = 0; j < 256; ++j)
61 {
62 pthread_join (threads[j], NULL);
63 }
64 }
65
66 pthread_attr_destroy (&attr);
67
68 return 0;
69}