Example #1
0
int
pthread_rwlock_init(pthread_rwlock_t *ptr,
	    const pthread_rwlockattr_t *attr)
{
	if (__predict_false(__uselibcstub))
		return __libc_rwlock_init_stub(ptr, attr);

	if (attr && (attr->ptra_magic != _PT_RWLOCKATTR_MAGIC))
		return EINVAL;
	ptr->ptr_magic = _PT_RWLOCK_MAGIC;
	PTQ_INIT(&ptr->ptr_rblocked);
	PTQ_INIT(&ptr->ptr_wblocked);
	ptr->ptr_nreaders = 0;
	ptr->ptr_owner = NULL;

	return 0;
}
Example #2
0
int
pthread_barrier_init(pthread_barrier_t *barrier,
		     const pthread_barrierattr_t *attr, unsigned int count)
{
	
	if (attr != NULL && attr->ptba_magic != _PT_BARRIERATTR_MAGIC)
		return EINVAL;
	if (count == 0)
		return EINVAL;

	barrier->ptb_magic = _PT_BARRIER_MAGIC;
	PTQ_INIT(&barrier->ptb_waiters);
	barrier->ptb_initcount = count;
	barrier->ptb_curcount = 0;
	barrier->ptb_generation = 0;
	return 0;
}