(root)/
findutils-4.9.0/
gl/
lib/
windows-mutex.h
       1  /* Plain mutexes (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@clisp.org>, 2005.
      18     Based on GCC's gthr-win32.h.  */
      19  
      20  #ifndef _WINDOWS_MUTEX_H
      21  #define _WINDOWS_MUTEX_H
      22  
      23  #define WIN32_LEAN_AND_MEAN  /* avoid including junk */
      24  #include <windows.h>
      25  
      26  #include "windows-initguard.h"
      27  
      28  typedef struct
      29          {
      30            glwthread_initguard_t guard; /* protects the initialization */
      31            CRITICAL_SECTION lock;
      32          }
      33          glwthread_mutex_t;
      34  
      35  #define GLWTHREAD_MUTEX_INIT { GLWTHREAD_INITGUARD_INIT }
      36  
      37  #ifdef __cplusplus
      38  extern "C" {
      39  #endif
      40  
      41  extern void glwthread_mutex_init (glwthread_mutex_t *mutex);
      42  extern int glwthread_mutex_lock (glwthread_mutex_t *mutex);
      43  extern int glwthread_mutex_trylock (glwthread_mutex_t *mutex);
      44  extern int glwthread_mutex_unlock (glwthread_mutex_t *mutex);
      45  extern int glwthread_mutex_destroy (glwthread_mutex_t *mutex);
      46  
      47  #ifdef __cplusplus
      48  }
      49  #endif
      50  
      51  #endif /* _WINDOWS_MUTEX_H */