int ethr_event_init(ethr_event *e) { ethr_atomic32_init(&e->state, ETHR_EVENT_OFF__); e->handle = CreateEvent(NULL, FALSE, FALSE, NULL); if (e->handle == INVALID_HANDLE_VALUE) return ethr_win_get_errno__(); return 0; }
int ethr_event_init(ethr_event *e) { int res; ethr_atomic32_init(&e->state, ETHR_EVENT_OFF__); res = pthread_mutex_init(&e->mtx, NULL); if (res != 0) return res; res = pthread_cond_init(&e->cnd, NULL); if (res != 0) { pthread_mutex_destroy(&e->mtx); return res; } return 0; }
static ethr_ts_event *ts_event_pool(int size, ethr_ts_event **endpp) { int i; ethr_aligned_ts_event *atsev; atsev = ethr_mem__.std.alloc(sizeof(ethr_aligned_ts_event) * size + ETHR_CACHE_LINE_SIZE); if (!atsev) return NULL; if ((((ethr_uint_t) atsev) & ETHR_CACHE_LINE_MASK) == 0) atsev = ((ethr_aligned_ts_event *) ((((ethr_uint_t) atsev) & ~ETHR_CACHE_LINE_MASK) + ETHR_CACHE_LINE_SIZE)); for (i = 1; i < size; i++) { atsev[i-1].ts_ev.next = &atsev[i].ts_ev; ethr_atomic32_init(&atsev[i-1].ts_ev.uaflgs, 0); atsev[i-1].ts_ev.iflgs = 0; } ethr_atomic32_init(&atsev[size-1].ts_ev.uaflgs, 0); atsev[size-1].ts_ev.iflgs = 0; atsev[size-1].ts_ev.next = NULL; if (endpp) *endpp = &atsev[size-1].ts_ev; return &atsev[0].ts_ev; }
int ethr_event_init(ethr_event *e) { int res; ethr_atomic32_init(&e->state, ETHR_EVENT_OFF__); res = pthread_mutex_init(&e->mtx, NULL); if (res != 0) return res; res = pthread_cond_init(&e->cnd, monotonic_clock_cond_attr_p); if (res != 0) { pthread_mutex_destroy(&e->mtx); return res; } #ifdef ETHR_HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC /* * If ethr_get_monotonic_time() is broken we * fall back on the pipe/select solution... */ if (monotonic_clock_cond_attr_p) { e->fd[0] = e->fd[1] = ETHR_EVENT_COND_TIMEDWAIT__; return 0; } #endif e->fd[0] = e->fd[1] = ETHR_EVENT_INVALID_FD__; #ifdef __DARWIN__ e->fdsets = NULL; #endif return 0; }
int ethr_event_init(ethr_event *e) { ethr_atomic32_init(&e->futex, ETHR_EVENT_OFF__); return 0; }