]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.threads/manythreads.c
Update copyright year range in all GDB files
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.threads / manythreads.c
CommitLineData
899d9e3a 1/* Manythreads test program.
e2882c85 2 Copyright 2004-2018 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 22#include <pthread.h>
e5d98164 23#ifdef DEBUG
7339a42e 24#include <stdio.h>
e5d98164 25#endif
1e9f977e 26#include <limits.h>
7339a42e
JJ
27
28void *
29thread_function (void *arg)
30{
5bd2f6e2 31 int x = * (int *) arg;
7339a42e 32
e5d98164 33#ifdef DEBUG
7339a42e 34 printf ("Thread <%d> executing\n", x);
e5d98164 35#endif /* DEBUG */
7339a42e
JJ
36
37 return NULL;
38}
39
40int
41main (int argc, char **argv)
42{
43 pthread_attr_t attr;
44 pthread_t threads[256];
5bd2f6e2 45 int args[256];
7339a42e
JJ
46 int i, j;
47
48 pthread_attr_init (&attr);
17592de3
PA
49
50#ifdef PTHREAD_STACK_MIN
0057022f 51 pthread_attr_setstacksize (&attr, 2*PTHREAD_STACK_MIN);
17592de3 52#endif
7339a42e
JJ
53
54 /* Create a ton of quick-executing threads, then wait for them to
55 complete. */
56 for (i = 0; i < 1000; ++i)
57 {
58 for (j = 0; j < 256; ++j)
59 {
5bd2f6e2
DJ
60 args[j] = i * 1000 + j;
61 pthread_create (&threads[j], &attr, thread_function, &args[j]);
7339a42e
JJ
62 }
63
64 for (j = 0; j < 256; ++j)
65 {
66 pthread_join (threads[j], NULL);
67 }
68 }
69
70 pthread_attr_destroy (&attr);
71
72 return 0;
73}