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