• Home
  • Raw
  • Download

Lines Matching refs:barrier

255 static inline void util_barrier_init(util_barrier *barrier, unsigned count)  in util_barrier_init()  argument
257 pthread_barrier_init(barrier, NULL, count); in util_barrier_init()
260 static inline void util_barrier_destroy(util_barrier *barrier) in util_barrier_destroy() argument
262 pthread_barrier_destroy(barrier); in util_barrier_destroy()
265 static inline void util_barrier_wait(util_barrier *barrier) in util_barrier_wait() argument
267 pthread_barrier_wait(barrier); in util_barrier_wait()
281 static inline void util_barrier_init(util_barrier *barrier, unsigned count) in util_barrier_init() argument
283 barrier->count = count; in util_barrier_init()
284 barrier->waiters = 0; in util_barrier_init()
285 barrier->sequence = 0; in util_barrier_init()
286 (void) mtx_init(&barrier->mutex, mtx_plain); in util_barrier_init()
287 cnd_init(&barrier->condvar); in util_barrier_init()
290 static inline void util_barrier_destroy(util_barrier *barrier) in util_barrier_destroy() argument
292 assert(barrier->waiters == 0); in util_barrier_destroy()
293 mtx_destroy(&barrier->mutex); in util_barrier_destroy()
294 cnd_destroy(&barrier->condvar); in util_barrier_destroy()
297 static inline void util_barrier_wait(util_barrier *barrier) in util_barrier_wait() argument
299 mtx_lock(&barrier->mutex); in util_barrier_wait()
301 assert(barrier->waiters < barrier->count); in util_barrier_wait()
302 barrier->waiters++; in util_barrier_wait()
304 if (barrier->waiters < barrier->count) { in util_barrier_wait()
305 uint64_t sequence = barrier->sequence; in util_barrier_wait()
308 cnd_wait(&barrier->condvar, &barrier->mutex); in util_barrier_wait()
309 } while (sequence == barrier->sequence); in util_barrier_wait()
311 barrier->waiters = 0; in util_barrier_wait()
312 barrier->sequence++; in util_barrier_wait()
313 cnd_broadcast(&barrier->condvar); in util_barrier_wait()
316 mtx_unlock(&barrier->mutex); in util_barrier_wait()