1 /* Once-only control (native Windows implementation).
2    Copyright (C) 2005-2020 Free Software Foundation, Inc.
3 
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 3, or (at your option)
7    any later version.
8 
9    This program 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
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, see <https://www.gnu.org/licenses/>.  */
16 
17 /* Written by Bruno Haible <bruno@clisp.org>, 2005.
18    Based on GCC's gthr-win32.h.  */
19 
20 #ifndef _WINDOWS_ONCE_H
21 #define _WINDOWS_ONCE_H
22 
23 #define WIN32_LEAN_AND_MEAN  /* avoid including junk */
24 #include <windows.h>
25 
26 typedef struct
27         {
28           volatile int inited;
29           volatile LONG started;
30           CRITICAL_SECTION lock;
31         }
32         glwthread_once_t;
33 
34 #define GLWTHREAD_ONCE_INIT { -1, -1 }
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 extern void glwthread_once (glwthread_once_t *once_control,
41                             void (*initfunction) (void));
42 
43 #ifdef __cplusplus
44 }
45 #endif
46 
47 #endif /* _WINDOWS_ONCE_H */
48