version 1.3.4.2, 2012/01/24 14:04:58
|
version 1.3.4.4, 2012/01/24 15:29:09
|
Line 295 retry:
|
Line 295 retry:
|
#ifdef TIMER_WITHOUT_SORT |
#ifdef TIMER_WITHOUT_SORT |
clock_gettime(CLOCK_MONOTONIC, &now); |
clock_gettime(CLOCK_MONOTONIC, &now); |
|
|
timespecclear(&r->root_wait); | sched_timespecclear(&r->root_wait); |
TAILQ_FOREACH(task, &r->root_timer, task_node) { |
TAILQ_FOREACH(task, &r->root_timer, task_node) { |
if (!timespecisset(&r->root_wait)) | if (!sched_timespecisset(&r->root_wait)) |
r->root_wait = TASK_TS(task); |
r->root_wait = TASK_TS(task); |
else if (timespeccmp(&TASK_TS(task), &r->root_wait, -) < 0) | else if (sched_timespeccmp(&TASK_TS(task), &r->root_wait, -) < 0) |
r->root_wait = TASK_TS(task); |
r->root_wait = TASK_TS(task); |
} |
} |
|
|
if (TAILQ_FIRST(&r->root_timer)) { |
if (TAILQ_FIRST(&r->root_timer)) { |
m = r->root_wait; |
m = r->root_wait; |
timespecsub(&m, &now, &mtmp); | sched_timespecsub(&m, &now, &mtmp); |
r->root_wait = mtmp; |
r->root_wait = mtmp; |
} else { |
} else { |
/* set wait INFTIM */ |
/* set wait INFTIM */ |
r->root_wait.tv_sec = r->root_wait.tv_usec = -1; | sched_timespecinf(&r->root_wait); |
} |
} |
#else |
#else |
if (!TAILQ_FIRST(&r->root_eventlo) && (task = TAILQ_FIRST(&r->root_timer))) { |
if (!TAILQ_FIRST(&r->root_eventlo) && (task = TAILQ_FIRST(&r->root_timer))) { |
clock_gettime(CLOCK_MONOTONIC, &now); |
clock_gettime(CLOCK_MONOTONIC, &now); |
|
|
m = TASK_TS(task); |
m = TASK_TS(task); |
timespecsub(&m, &now, &mtmp); | sched_timespecsub(&m, &now, &mtmp); |
r->root_wait = mtmp; |
r->root_wait = mtmp; |
} else { |
} else { |
/* set wait INFTIM */ |
/* set wait INFTIM */ |
r->root_wait.tv_sec = r->root_wait.tv_nsec = -1; | sched_timespecinf(&r->root_wait); |
} |
} |
#endif |
#endif |
/* if present member of eventLo, set NOWAIT */ |
/* if present member of eventLo, set NOWAIT */ |
if (TAILQ_FIRST(&r->root_eventlo)) |
if (TAILQ_FIRST(&r->root_eventlo)) |
timespecclear(&r->root_wait); | sched_timespecclear(&r->root_wait); |
|
|
if (r->root_wait.tv_sec != -1 && r->root_wait.tv_nsec != -1) |
if (r->root_wait.tv_sec != -1 && r->root_wait.tv_nsec != -1) |
timeout = &r->root_wait; |
timeout = &r->root_wait; |
else /* wait INFTIM */ | else if (sched_timespecinf(&r->root_poll)) |
timeout = NULL; |
timeout = NULL; |
|
else |
|
timeout = &r->root_poll; |
if ((en = kevent(r->root_kq, NULL, 0, res, KQ_EVENTS, timeout)) == -1) { |
if ((en = kevent(r->root_kq, NULL, 0, res, KQ_EVENTS, timeout)) == -1) { |
if (r->root_hooks.hook_exec.exception) { |
if (r->root_hooks.hook_exec.exception) { |
if (r->root_hooks.hook_exec.exception(r, NULL)) |
if (r->root_hooks.hook_exec.exception(r, NULL)) |
Line 463 retry:
|
Line 465 retry:
|
clock_gettime(CLOCK_MONOTONIC, &now); |
clock_gettime(CLOCK_MONOTONIC, &now); |
|
|
TAILQ_FOREACH(task, &r->root_timer, task_node) |
TAILQ_FOREACH(task, &r->root_timer, task_node) |
if (timespeccmp(&now, &TASK_TS(task), -) >= 0) { | if (sched_timespeccmp(&now, &TASK_TS(task), -) >= 0) { |
#ifdef HAVE_LIBPTHREAD |
#ifdef HAVE_LIBPTHREAD |
pthread_mutex_lock(&r->root_mtx[taskTIMER]); |
pthread_mutex_lock(&r->root_mtx[taskTIMER]); |
#endif |
#endif |