pthread_barrier_destroy.c 331 B

123456789101112131415161718
  1. #include "pthread_impl.h"
  2. void __vm_lock(int), __vm_unlock(void);
  3. int pthread_barrier_destroy(pthread_barrier_t *b)
  4. {
  5. if (b->_b_limit < 0) {
  6. if (b->_b_lock) {
  7. int v;
  8. a_or(&b->_b_lock, INT_MIN);
  9. while ((v = b->_b_lock) & INT_MAX)
  10. __wait(&b->_b_lock, 0, v, 0);
  11. }
  12. __vm_lock(-1);
  13. __vm_unlock();
  14. }
  15. return 0;
  16. }