]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.threads/reconnect-signal.c
Update copyright year range in all GDB files
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.threads / reconnect-signal.c
CommitLineData
b7ea362b
PA
1/* This testcase is part of GDB, the GNU debugger.
2
e2882c85 3 Copyright 2013-2018 Free Software Foundation, Inc.
b7ea362b
PA
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
22static pthread_t thread_2;
23sig_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
30static void *
31start2 (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
42static void *
43start (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
52void
53handle (int sig)
54{
55 unlocked = 1;
56}
57
58int
59main ()
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}