Пример #1
0
static void
stm_grab(struct stm_object *obj) {
	rwlock_rlock(&obj->lock);
	int ref = ATOM_FINC(&obj->reference);
	rwlock_runlock(&obj->lock);
	assert(ref > 0);
}
Пример #2
0
uint32_t 
crb_set(Crb_t* rcb, void* data )
{
    uint32_t curr = ATOM_FINC(&rcb->curr);
    uint32_t index = curr & (rcb->size - 1);
    memcpy(rcb->data[index], data, rcb->msize);
    return curr;
}
Пример #3
0
static struct stm_copy *
stm_copy(struct stm_object *obj) {
	rwlock_rlock(&obj->lock);
	struct stm_copy * ret = obj->copy;
	if (ret) {
		int ref = ATOM_FINC(&ret->reference);
		assert(ref > 0);
	}
	rwlock_runlock(&obj->lock);
	
	return ret;
}