text: // Copyright (C) 2018-2021 Intel Corporation
  // SPDX-License-Identifier: Apache-2.0
  //
  
  #ifndef _SEMAPHORE_H_
  #define _SEMAPHORE_H_
  
  
  #include <errno.h>
  #include <fcntl.h>
  #include <windows.h>
  #include <stdio.h>
  
  
  #if !defined(malloc)
  #include <malloc.h>
  #endif
  #if !defined(INT_MAX)
  #include <limits.h>
  #endif
  
  
  #ifndef SEM_VALUE_MAX
  #define SEM_VALUE_MAX           INT_MAX
  #endif
  
  
  #if (_MSC_VER == 1800)
  struct timespec
  {
      /* long long in windows is the same as long in unix for 64bit */
      long long tv_sec;
      long long tv_nsec;
  };
  #elif (_MSC_VER >= 1800)
  #include "time.h"
  #endif
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  struct sem_t_
  {
      HANDLE handle;
  };
  typedef struct sem_t_ * sem_t;
  
  
  int sem_init(sem_t *sem, int pshared, unsigned int value);
  int sem_wait(sem_t *sem);
  int sem_timedwait(sem_t *sem, const struct timespec *ts);
  int sem_post(sem_t *sem);
  int sem_destroy(sem_t *sem);
  
  
  #ifdef __cplusplus
  }
  #endif
  
  
  #endif /* _SEMAPHORE_H_ */
  