Lines Matching refs:cond
111 int usbi_cond_init(usbi_cond_t *cond)
113 if (!cond)
115 list_init(&cond->waiters);
116 list_init(&cond->not_waiting);
120 int usbi_cond_destroy(usbi_cond_t *cond)
125 if(!cond)
127 if (!list_empty(&cond->waiters))
129 list_for_each_entry_safe(pos, next_pos, &cond->not_waiting, list, struct usbi_cond_perthread) {
137 int usbi_cond_broadcast(usbi_cond_t *cond)
145 if (!cond)
147 list_for_each_entry(pos, &cond->waiters, list, struct usbi_cond_perthread) {
155 __inline static int usbi_cond_intwait(usbi_cond_t *cond,
162 if (!cond || !mutex)
164 list_for_each_entry(pos, &cond->not_waiting, list, struct usbi_cond_perthread) {
181 list_add(&pos->list, &cond->not_waiting);
185 list_add(&pos->list, &cond->waiters);
197 list_add(&pos->list, &cond->not_waiting);
207 int usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex)
209 return usbi_cond_intwait(cond, mutex, INFINITE);
212 int usbi_cond_timedwait(usbi_cond_t *cond,
221 return usbi_cond_intwait(cond, mutex, millis);