Lines Matching defs:cond

127 STATIC INLINE INT32 CondInitCheck(const pthread_cond_t *cond)
129 if ((cond->event.stEventList.pstPrev == NULL) &&
130 (cond->event.stEventList.pstNext == NULL)) {
137 int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
142 if (cond == NULL) {
151 (VOID)LOS_EventInit(&(cond->event));
153 cond->mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
154 if (cond->mutex == NULL) {
158 (VOID)pthread_mutex_init(cond->mutex, NULL);
160 cond->value = 0;
161 (VOID)pthread_mutex_lock(cond->mutex);
162 cond->count = 0;
163 cond->clock = attr->clock;
164 (VOID)pthread_mutex_unlock(cond->mutex);
169 int pthread_cond_destroy(pthread_cond_t *cond)
171 if (cond == NULL) {
175 if (CondInitCheck(cond)) {
179 if (LOS_EventDestroy(&cond->event) != LOS_OK) {
182 if (pthread_mutex_destroy(cond->mutex) != 0) {
186 free(cond->mutex);
187 cond->mutex = NULL;
192 STATIC VOID PthreadCountSub(pthread_cond_t *cond)
194 (VOID)pthread_mutex_lock(cond->mutex);
195 if (cond->count > 0) {
196 cond->count--;
198 (VOID)pthread_mutex_unlock(cond->mutex);
202 int pthread_cond_broadcast(pthread_cond_t *cond)
206 if (cond == NULL) {
210 (VOID)pthread_mutex_lock(cond->mutex);
211 if (cond->count > 0) {
212 cond->count = 0;
213 (VOID)pthread_mutex_unlock(cond->mutex);
214 (VOID)LOS_EventWrite(&(cond->event), BROADCAST_EVENT);
217 (VOID)pthread_mutex_unlock(cond->mutex);
222 int pthread_cond_signal(pthread_cond_t *cond)
226 if (cond == NULL) {
230 (VOID)pthread_mutex_lock(cond->mutex);
231 if (cond->count > 0) {
232 cond->count--;
233 (VOID)pthread_mutex_unlock(cond->mutex);
235 (VOID)LOS_EventWrite(&(cond->event), BROADCAST_EVENT);
239 (VOID)pthread_mutex_unlock(cond->mutex);
244 STATIC INT32 ProcessReturnVal(pthread_cond_t *cond, INT32 val)
254 PthreadCountSub(cond);
258 PthreadCountSub(cond);
266 int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
273 if ((cond == NULL) || (mutex == NULL) || (ts == NULL) || (mutex->magic != _MUX_MAGIC)) {
282 if (CondInitCheck(cond)) {
283 ret = pthread_cond_init(cond, NULL);
289 (VOID)pthread_mutex_lock(cond->mutex);
290 cond->count++;
291 (VOID)pthread_mutex_unlock(cond->mutex);
293 ret = OsGetTickTimeFromNow(ts, cond->clock, &absTicks);
306 ret = (INT32)LOS_EventRead(&(cond->event), 0x0f, LOS_WAITMODE_OR | LOS_WAITMODE_CLR, (UINT32)absTicks);
312 ret = ProcessReturnVal(cond, ret);
318 int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
322 if ((cond == NULL) || (mutex == NULL)) {
326 if (CondInitCheck(cond)) {
327 ret = pthread_cond_init(cond, NULL);
333 (VOID)pthread_mutex_lock(cond->mutex);
334 cond->count++;
335 (VOID)pthread_mutex_unlock(cond->mutex);
340 ret = (INT32)LOS_EventRead(&(cond->event), 0x0f, LOS_WAITMODE_OR | LOS_WAITMODE_CLR, LOS_WAIT_FOREVER);
352 PthreadCountSub(cond);