static int pthread_timer_enable_continuous(void *data) { struct pthread_timer *timer = data; ao2_lock(timer); if (!timer->continuous) { timer->continuous = true; signal_pipe(timer); } ao2_unlock(timer); return 0; }
static int run_timer(void *obj, void *arg, int flags) { struct pthread_timer *timer = obj; if (timer->state == TIMER_STATE_IDLE) { return 0; } ao2_lock(timer); if (check_timer(timer)) { timer->pending_ticks++; signal_pipe(timer); } ao2_unlock(timer); return 0; }
static int pthread_timer_enable_continuous(int handle) { struct pthread_timer *timer; if (!(timer = find_timer(handle, 0))) { errno = EINVAL; return -1; } ao2_lock(timer); if (!timer->continuous) { timer->continuous = true; signal_pipe(timer); } ao2_unlock(timer); ao2_ref(timer, -1); return 0; }