yaes/deps/labjack/ljacklm/libljacklm/windows_mutex_shim.h
torque c32390f7c1
deps.labjack: support building for windows
The only pthread functionality this seems to use is mutexes, which are
(fortunately) theoretically trivial to wrap for windows. This
compiles, though it is not clear if it actually works correctly.
2024-07-02 21:30:31 -07:00

29 lines
690 B
C

#ifndef LJACKLM_WIN_MUTEX
#define LJACKLM_WIN_MUTEX
typedef CRITICAL_SECTION pthread_mutex_t;
static inline int pthread_mutex_init(pthread_mutex_t *mutex, void *attr) {
InitializeCriticalSection(mutex);
return 0;
}
static inline void pthread_mutex_lock(pthread_mutex_t *mutex) {
EnterCriticalSection(mutex);
}
static inline int pthread_mutex_unlock(pthread_mutex_t *mutex) {
LeaveCriticalSection(mutex);
return 0;
}
static inline int pthread_mutex_trylock(pthread_mutex_t *mutex) {
return TryEnterCriticalSection(mutex) == 0;
}
static inline void pthread_mutex_destroy(pthread_mutex_t *mutex) {
DeleteCriticalSection(mutex);
}
#endif // LJACKLM_WIN_MUTEX