int NdbCondition_Init(struct NdbCondition* ndb_cond) { int result; assert(init); /* Make sure library has been initialized */ #if defined HAVE_CLOCK_GETTIME && defined HAVE_PTHREAD_CONDATTR_SETCLOCK && \ defined CLOCK_MONOTONIC if (clock_id == CLOCK_MONOTONIC) { pthread_condattr_t attr; pthread_condattr_init(&attr); pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); result = pthread_cond_init(&ndb_cond->cond, &attr); pthread_condattr_destroy(&attr); } else { result = pthread_cond_init(&ndb_cond->cond, NULL); } #else result = native_cond_init(&ndb_cond->cond); #endif assert(result==0); return result; }
int rw_pr_init(rw_pr_lock_t *rwlock) { native_mutex_init(&rwlock->lock, NULL); native_cond_init(&rwlock->no_active_readers); rwlock->active_readers= 0; rwlock->writers_waiting_readers= 0; rwlock->active_writer= FALSE; #ifdef SAFE_MUTEX rwlock->writer_thread= 0; #endif return 0; }