Lines Matching refs:bar

47 	pthread_barrier_t bar;  in _pthread_barrier_destroy()  local
55 bar = __thr_pshared_offpage(barrier, 0); in _pthread_barrier_destroy()
56 if (bar == NULL) { in _pthread_barrier_destroy()
62 bar = *barrier; in _pthread_barrier_destroy()
66 THR_UMUTEX_LOCK(curthread, &bar->b_lock); in _pthread_barrier_destroy()
67 if (bar->b_destroying) { in _pthread_barrier_destroy()
68 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); in _pthread_barrier_destroy()
71 bar->b_destroying = 1; in _pthread_barrier_destroy()
73 if (bar->b_waiters > 0) { in _pthread_barrier_destroy()
74 bar->b_destroying = 0; in _pthread_barrier_destroy()
75 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); in _pthread_barrier_destroy()
78 if (bar->b_refcount != 0) { in _pthread_barrier_destroy()
79 _thr_ucond_wait(&bar->b_cv, &bar->b_lock, NULL, 0); in _pthread_barrier_destroy()
80 THR_UMUTEX_LOCK(curthread, &bar->b_lock); in _pthread_barrier_destroy()
84 bar->b_destroying = 0; in _pthread_barrier_destroy()
85 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); in _pthread_barrier_destroy()
91 free(bar); in _pthread_barrier_destroy()
99 pthread_barrier_t bar; in _pthread_barrier_init() local
107 bar = calloc(1, sizeof(struct pthread_barrier)); in _pthread_barrier_init()
108 if (bar == NULL) in _pthread_barrier_init()
110 *barrier = bar; in _pthread_barrier_init()
113 bar = __thr_pshared_offpage(barrier, 1); in _pthread_barrier_init()
114 if (bar == NULL) in _pthread_barrier_init()
120 _thr_umutex_init(&bar->b_lock); in _pthread_barrier_init()
121 _thr_ucond_init(&bar->b_cv); in _pthread_barrier_init()
123 bar->b_lock.m_flags |= USYNC_PROCESS_SHARED; in _pthread_barrier_init()
124 bar->b_cv.c_flags |= USYNC_PROCESS_SHARED; in _pthread_barrier_init()
126 bar->b_count = count; in _pthread_barrier_init()
134 pthread_barrier_t bar; in _pthread_barrier_wait() local
142 bar = __thr_pshared_offpage(barrier, 0); in _pthread_barrier_wait()
143 if (bar == NULL) in _pthread_barrier_wait()
146 bar = *barrier; in _pthread_barrier_wait()
149 THR_UMUTEX_LOCK(curthread, &bar->b_lock); in _pthread_barrier_wait()
150 if (++bar->b_waiters == bar->b_count) { in _pthread_barrier_wait()
152 bar->b_waiters = 0; in _pthread_barrier_wait()
153 bar->b_cycle++; in _pthread_barrier_wait()
154 _thr_ucond_broadcast(&bar->b_cv); in _pthread_barrier_wait()
155 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); in _pthread_barrier_wait()
158 cycle = bar->b_cycle; in _pthread_barrier_wait()
159 bar->b_refcount++; in _pthread_barrier_wait()
161 _thr_ucond_wait(&bar->b_cv, &bar->b_lock, NULL, 0); in _pthread_barrier_wait()
162 THR_UMUTEX_LOCK(curthread, &bar->b_lock); in _pthread_barrier_wait()
164 } while (cycle == bar->b_cycle); in _pthread_barrier_wait()
165 if (--bar->b_refcount == 0 && bar->b_destroying) in _pthread_barrier_wait()
166 _thr_ucond_broadcast(&bar->b_cv); in _pthread_barrier_wait()
167 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); in _pthread_barrier_wait()