xref: /aosp_15_r20/external/musl/src/thread/pthread_barrier_destroy.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include "pthread_impl.h"
2*c9945492SAndroid Build Coastguard Worker 
pthread_barrier_destroy(pthread_barrier_t * b)3*c9945492SAndroid Build Coastguard Worker int pthread_barrier_destroy(pthread_barrier_t *b)
4*c9945492SAndroid Build Coastguard Worker {
5*c9945492SAndroid Build Coastguard Worker 	if (b->_b_limit < 0) {
6*c9945492SAndroid Build Coastguard Worker 		if (b->_b_lock) {
7*c9945492SAndroid Build Coastguard Worker 			int v;
8*c9945492SAndroid Build Coastguard Worker 			a_or(&b->_b_lock, INT_MIN);
9*c9945492SAndroid Build Coastguard Worker 			while ((v = b->_b_lock) & INT_MAX)
10*c9945492SAndroid Build Coastguard Worker 				__wait(&b->_b_lock, 0, v, 0);
11*c9945492SAndroid Build Coastguard Worker 		}
12*c9945492SAndroid Build Coastguard Worker 		__vm_wait();
13*c9945492SAndroid Build Coastguard Worker 	}
14*c9945492SAndroid Build Coastguard Worker 	return 0;
15*c9945492SAndroid Build Coastguard Worker }
16