Home | History | Annotate | Line # | Download | only in import
      1 /* Once-only control (native Windows implementation).
      2    Copyright (C) 2005-2022 Free Software Foundation, Inc.
      3 
      4    This file is free software: you can redistribute it and/or modify
      5    it under the terms of the GNU Lesser General Public License as
      6    published by the Free Software Foundation; either version 2.1 of the
      7    License, or (at your option) any later version.
      8 
      9    This file 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 Lesser General Public License for more details.
     13 
     14    You should have received a copy of the GNU Lesser General Public License
     15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
     16 
     17 /* Written by Bruno Haible <bruno (at) 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