Lines Matching full:barrier
27 * via the careful use of barrier messages sent to all the index zones by the triage queue worker
37 * and the serialization of the barrier requests from the triage queue ensures they will all
41 * are known to be blocked, waiting in the second barrier. Outside that critical section, all the
144 /* Lock for this barrier object */
146 /* Semaphore for threads waiting at this barrier */
150 /* Total number of threads using this barrier */
169 static void initialize_threads_barrier(struct threads_barrier *barrier, in initialize_threads_barrier() argument
172 sema_init(&barrier->lock, 1); in initialize_threads_barrier()
173 barrier->arrived = 0; in initialize_threads_barrier()
174 barrier->thread_count = thread_count; in initialize_threads_barrier()
175 sema_init(&barrier->wait, 0); in initialize_threads_barrier()
199 static void enter_threads_barrier(struct threads_barrier *barrier) in enter_threads_barrier() argument
201 __down(&barrier->lock); in enter_threads_barrier()
202 if (++barrier->arrived == barrier->thread_count) { in enter_threads_barrier()
206 for (i = 1; i < barrier->thread_count; i++) in enter_threads_barrier()
207 up(&barrier->wait); in enter_threads_barrier()
209 barrier->arrived = 0; in enter_threads_barrier()
210 up(&barrier->lock); in enter_threads_barrier()
212 up(&barrier->lock); in enter_threads_barrier()
213 __down(&barrier->wait); in enter_threads_barrier()
502 * Wait for every zone thread to reach its corresponding barrier request and invoke this in uds_update_sparse_cache()