• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/lib/libthr/thread/

Lines Matching defs:bar

50 	pthread_barrier_t bar;
58 bar = __thr_pshared_offpage(barrier, 0);
59 if (bar == NULL) {
65 bar = *barrier;
69 THR_UMUTEX_LOCK(curthread, &bar->b_lock);
70 if (bar->b_destroying) {
71 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock);
74 bar->b_destroying = 1;
76 if (bar->b_waiters > 0) {
77 bar->b_destroying = 0;
78 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock);
81 if (bar->b_refcount != 0) {
82 _thr_ucond_wait(&bar->b_cv, &bar->b_lock, NULL, 0);
83 THR_UMUTEX_LOCK(curthread, &bar->b_lock);
87 bar->b_destroying = 0;
88 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock);
94 free(bar);
102 pthread_barrier_t bar;
110 bar = calloc(1, sizeof(struct pthread_barrier));
111 if (bar == NULL)
113 *barrier = bar;
116 bar = __thr_pshared_offpage(barrier, 1);
117 if (bar == NULL)
123 _thr_umutex_init(&bar->b_lock);
124 _thr_ucond_init(&bar->b_cv);
126 bar->b_lock.m_flags |= USYNC_PROCESS_SHARED;
127 bar->b_cv.c_flags |= USYNC_PROCESS_SHARED;
129 bar->b_count = count;
137 pthread_barrier_t bar;
145 bar = __thr_pshared_offpage(barrier, 0);
146 if (bar == NULL)
149 bar = *barrier;
152 THR_UMUTEX_LOCK(curthread, &bar->b_lock);
153 if (++bar->b_waiters == bar->b_count) {
155 bar->b_waiters = 0;
156 bar->b_cycle++;
157 _thr_ucond_broadcast(&bar->b_cv);
158 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock);
161 cycle = bar->b_cycle;
162 bar->b_refcount++;
164 _thr_ucond_wait(&bar->b_cv, &bar->b_lock, NULL, 0);
165 THR_UMUTEX_LOCK(curthread, &bar->b_lock);
167 } while (cycle == bar->b_cycle);
168 if (--bar->b_refcount == 0 && bar->b_destroying)
169 _thr_ucond_broadcast(&bar->b_cv);
170 THR_UMUTEX_UNLOCK(curthread, &bar->b_lock);