static inline void futex_init() { mcs_pdr_init(&__futex.lock); TAILQ_INIT(&__futex.queue); __futex.timer_enabled = false; pthread_create(&__futex.timer, NULL, timer_thread, NULL); __futex.time = 0; }
int upthread_cond_init(upthread_cond_t *c, const upthread_condattr_t *a) { if(c == NULL) return EINVAL; mcs_pdr_init(&c->lock); STAILQ_INIT(&c->queue); return 0; }
int lithe_mutex_init(lithe_mutex_t *mutex, lithe_mutexattr_t *attr) { if(mutex == NULL) return EINVAL; if(attr == NULL) lithe_mutexattr_init(&mutex->attr); else mutex->attr = *attr; /* Do initialization. */ TAILQ_INIT(&mutex->queue); mcs_pdr_init(&mutex->lock); mutex->qnode = NULL; mutex->locked = 0; mutex->owner = NULL; return 0; }