Update copyright year range in all GDB files.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.threads / reconnect-signal.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3 Copyright 2013-2020 Free Software Foundation, Inc.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
17
18 #include <pthread.h>
19 #include <signal.h>
20 #include <unistd.h>
21
22 static pthread_t thread_2;
23 sig_atomic_t unlocked;
24
25 /* The test has three threads, and it's always thread 2 that gets the
26 signal, to avoid spurious passes in case the remote side happens to
27 always pick the first or the last thread in the list as the
28 current/status thread on reconnection. */
29
30 static void *
31 start2 (void *arg)
32 {
33 unsigned int count;
34
35 pthread_kill (thread_2, SIGUSR1);
36
37 for (count = 1; !unlocked && count != 0; count++)
38 usleep (1);
39 return NULL;
40 }
41
42 static void *
43 start (void *arg)
44 {
45 pthread_t thread;
46
47 pthread_create (&thread, NULL, start2, NULL);
48 pthread_join (thread, NULL);
49 return NULL;
50 }
51
52 void
53 handle (int sig)
54 {
55 unlocked = 1;
56 }
57
58 int
59 main ()
60 {
61 signal (SIGUSR1, handle);
62
63 pthread_create (&thread_2, NULL, start, NULL);
64 pthread_join (thread_2, NULL);
65
66 return 0;
67 }
This page took 0.029921 seconds and 4 git commands to generate.