1 /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3 
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8 
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <https://www.gnu.org/licenses/>.  */
17 
18 #include <pthread.h>
19 #include <stdio.h>
20 
21 
22 static pthread_once_t once = PTHREAD_ONCE_INIT;
23 
24 static int global;
25 
26 static void
once_handler(void)27 once_handler (void)
28 {
29   ++global;
30 }
31 
32 
33 static int
do_test(void)34 do_test (void)
35 {
36   pthread_once (&once, once_handler);
37   pthread_once (&once, once_handler);
38 
39   if (global != 1)
40     {
41       printf ("global = %d, expected 1\n", global);
42       return 1;
43     }
44 
45   return 0;
46 }
47 
48 #define TEST_FUNCTION do_test ()
49 #include "../test-skeleton.c"
50