Lines Matching refs:mutex
28 glwthread_mutex_init (glwthread_mutex_t *mutex) in glwthread_mutex_init() argument
30 InitializeCriticalSection (&mutex->lock); in glwthread_mutex_init()
31 mutex->guard.done = 1; in glwthread_mutex_init()
35 glwthread_mutex_lock (glwthread_mutex_t *mutex) in glwthread_mutex_lock() argument
37 if (!mutex->guard.done) in glwthread_mutex_lock()
39 if (InterlockedIncrement (&mutex->guard.started) == 0) in glwthread_mutex_lock()
41 glwthread_mutex_init (mutex); in glwthread_mutex_lock()
45 InterlockedDecrement (&mutex->guard.started); in glwthread_mutex_lock()
48 while (!mutex->guard.done) in glwthread_mutex_lock()
52 EnterCriticalSection (&mutex->lock); in glwthread_mutex_lock()
57 glwthread_mutex_trylock (glwthread_mutex_t *mutex) in glwthread_mutex_trylock() argument
59 if (!mutex->guard.done) in glwthread_mutex_trylock()
61 if (InterlockedIncrement (&mutex->guard.started) == 0) in glwthread_mutex_trylock()
63 glwthread_mutex_init (mutex); in glwthread_mutex_trylock()
67 InterlockedDecrement (&mutex->guard.started); in glwthread_mutex_trylock()
73 if (!TryEnterCriticalSection (&mutex->lock)) in glwthread_mutex_trylock()
79 glwthread_mutex_unlock (glwthread_mutex_t *mutex) in glwthread_mutex_unlock() argument
81 if (!mutex->guard.done) in glwthread_mutex_unlock()
83 LeaveCriticalSection (&mutex->lock); in glwthread_mutex_unlock()
88 glwthread_mutex_destroy (glwthread_mutex_t *mutex) in glwthread_mutex_destroy() argument
90 if (!mutex->guard.done) in glwthread_mutex_destroy()
92 DeleteCriticalSection (&mutex->lock); in glwthread_mutex_destroy()
93 mutex->guard.done = 0; in glwthread_mutex_destroy()