summaryrefslogtreecommitdiff
path: root/src/thread/pthread_cond_destroy.c
blob: 8c5551600e8c35d0a9f5fe194ee060d8303c22f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "pthread_impl.h"

int pthread_cond_destroy(pthread_cond_t *c)
{
	if (c->_c_shared && c->_c_waiters) {
		int cnt;
		a_or(&c->_c_waiters, 0x80000000);
		a_inc(&c->_c_seq);
		__wake(&c->_c_seq, -1, 0);
		while ((cnt = c->_c_waiters) & 0x7fffffff)
			__wait(&c->_c_waiters, 0, cnt, 0);
	}
	return 0;
}