Lines Matching refs:bar
49 barrier_init(barrier_t *bar, int nthreads) in barrier_init() argument
51 pthread_mutex_init(&bar->bar_lock, NULL); in barrier_init()
53 sema_init(&bar->bar_sem, 0, USYNC_THREAD, NULL); in barrier_init()
55 sem_init(&bar->bar_sem, 0, 0); in barrier_init()
58 bar->bar_numin = 0; in barrier_init()
59 bar->bar_nthr = nthreads; in barrier_init()
63 barrier_wait(barrier_t *bar) in barrier_wait() argument
65 pthread_mutex_lock(&bar->bar_lock); in barrier_wait()
67 if (++bar->bar_numin < bar->bar_nthr) { in barrier_wait()
68 pthread_mutex_unlock(&bar->bar_lock); in barrier_wait()
70 sema_wait(&bar->bar_sem); in barrier_wait()
72 sem_wait(&bar->bar_sem); in barrier_wait()
81 bar->bar_numin = 0; in barrier_wait()
82 for (i = 1; i < bar->bar_nthr; i++) in barrier_wait()
84 sema_post(&bar->bar_sem); in barrier_wait()
86 sem_post(&bar->bar_sem); in barrier_wait()
88 pthread_mutex_unlock(&bar->bar_lock); in barrier_wait()