Lines Matching defs:cond

32 pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* _attr)
37 cond->flags = 0;
39 cond->flags |= COND_FLAG_SHARED;
42 cond->flags |= COND_FLAG_MONOTONIC;
44 cond->mutex = NULL;
45 cond->waiter_count = 0;
46 cond->lock = 0;
53 pthread_cond_destroy(pthread_cond_t* cond)
60 cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex, uint32 flags,
68 if (cond->mutex != NULL && cond->mutex != mutex) {
73 cond->mutex = mutex;
74 cond->waiter_count++;
77 atomic_test_and_set((int32*)&cond->lock, B_USER_MUTEX_LOCKED, 0);
83 if ((cond->flags & COND_FLAG_SHARED) != 0)
87 (int32*)&cond->lock, "pthread condition", flags, timeout);
97 cond->waiter_count--;
100 if (cond->waiter_count == 0)
101 cond->mutex = NULL;
108 cond_signal(pthread_cond_t* cond, bool broadcast)
110 if (cond->waiter_count == 0)
116 if ((cond->flags & COND_FLAG_SHARED) != 0)
120 atomic_and((int32*)&cond->lock, ~(int32)B_USER_MUTEX_LOCKED);
121 _kern_mutex_unblock((int32*)&cond->lock, flags);
126 pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* _mutex)
128 RETURN_AND_TEST_CANCEL(cond_wait(cond, _mutex, 0, B_INFINITE_TIMEOUT));
133 pthread_cond_clockwait(pthread_cond_t* cond, pthread_mutex_t* mutex,
153 RETURN_AND_TEST_CANCEL(cond_wait(cond, mutex, flags, timeoutMicros));
158 pthread_cond_timedwait(pthread_cond_t* cond, pthread_mutex_t* mutex,
161 return pthread_cond_clockwait(cond, mutex,
162 (cond->flags & COND_FLAG_MONOTONIC) != 0 ? CLOCK_MONOTONIC : CLOCK_REALTIME,
168 pthread_cond_broadcast(pthread_cond_t* cond)
170 cond_signal(cond, true);
176 pthread_cond_signal(pthread_cond_t* cond)
178 cond_signal(cond, false);