1 // Copyright (C) 2018-2020 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include "win_synchapi.h"
7 int pthread_cond_init(pthread_cond_t* __cond, const pthread_condattr_t* __cond_attr)
10 return ERROR_INVALID_HANDLE;
14 InitializeConditionVariable(&__cond->_cv);
18 int pthread_cond_destroy(pthread_cond_t* __cond)
24 int pthread_cond_timedwait(pthread_cond_t* __cond,
25 pthread_mutex_t* __mutex,
26 const struct timespec* __abstime)
29 return ERROR_INVALID_HANDLE;
32 long long msec = INFINITE;
33 if (__abstime != NULL) {
34 msec = __abstime->tv_sec * 1000 + __abstime->tv_nsec / 1000000;
37 // SleepConditionVariableCS returns bool=true on success.
38 if (SleepConditionVariableCS(&__cond->_cv, __mutex, (DWORD)msec))
41 const int rc = (int)GetLastError();
42 return rc == ERROR_TIMEOUT ? ETIMEDOUT : rc;
45 int pthread_cond_broadcast(pthread_cond_t *__cond)
48 return ERROR_INVALID_HANDLE;
51 WakeConditionVariable(&__cond->_cv);