version 1.11, 2012/08/02 13:56:19
|
version 1.12, 2012/08/08 08:25:39
|
Line 550 sched_hook_fetch(void *root, void *arg __unused)
|
Line 550 sched_hook_fetch(void *root, void *arg __unused)
|
sched_timespecinf(&r->root_wait); |
sched_timespecinf(&r->root_wait); |
} |
} |
#else |
#else |
if (!TAILQ_FIRST(&r->root_eventlo) && (task = TAILQ_FIRST(&r->root_timer))) { | if (!TAILQ_FIRST(&r->root_task) && (task = TAILQ_FIRST(&r->root_timer))) { |
clock_gettime(CLOCK_MONOTONIC, &now); |
clock_gettime(CLOCK_MONOTONIC, &now); |
|
|
m = TASK_TS(task); |
m = TASK_TS(task); |
Line 561 sched_hook_fetch(void *root, void *arg __unused)
|
Line 561 sched_hook_fetch(void *root, void *arg __unused)
|
sched_timespecinf(&r->root_wait); |
sched_timespecinf(&r->root_wait); |
} |
} |
#endif |
#endif |
/* if present member of eventLo, set NOWAIT */ | /* if present member of task, set NOWAIT */ |
if (TAILQ_FIRST(&r->root_eventlo)) | if (TAILQ_FIRST(&r->root_task)) |
sched_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) |
Line 957 sched_hook_fetch(void *root, void *arg __unused)
|
Line 957 sched_hook_fetch(void *root, void *arg __unused)
|
#endif |
#endif |
} |
} |
|
|
/* put eventlo priority task to ready queue, if there is no ready task or | /* put regular task priority task to ready queue, |
reach max missed fetch-rotate */ | if there is no ready task or reach max missing hit events */ |
if ((task = TAILQ_FIRST(&r->root_eventlo))) { | if ((task = TAILQ_FIRST(&r->root_task))) { |
if (!TAILQ_FIRST(&r->root_ready) || r->root_eventlo_miss > MAX_EVENTLO_MISS) { | if (!TAILQ_FIRST(&r->root_ready) || r->root_task_miss > r->root_miss) { |
r->root_eventlo_miss = 0; | r->root_task_miss ^= r->root_task_miss; |
|
|
#ifdef HAVE_LIBPTHREAD |
#ifdef HAVE_LIBPTHREAD |
pthread_mutex_lock(&r->root_mtx[taskEVENTLO]); | pthread_mutex_lock(&r->root_mtx[taskTASK]); |
#endif |
#endif |
TAILQ_REMOVE(&r->root_eventlo, task, task_node); | TAILQ_REMOVE(&r->root_task, task, task_node); |
#ifdef HAVE_LIBPTHREAD |
#ifdef HAVE_LIBPTHREAD |
pthread_mutex_unlock(&r->root_mtx[taskEVENTLO]); | pthread_mutex_unlock(&r->root_mtx[taskTASK]); |
#endif |
#endif |
task->task_type = taskREADY; |
task->task_type = taskREADY; |
#ifdef HAVE_LIBPTHREAD |
#ifdef HAVE_LIBPTHREAD |
Line 979 sched_hook_fetch(void *root, void *arg __unused)
|
Line 979 sched_hook_fetch(void *root, void *arg __unused)
|
pthread_mutex_unlock(&r->root_mtx[taskREADY]); |
pthread_mutex_unlock(&r->root_mtx[taskREADY]); |
#endif |
#endif |
} else |
} else |
r->root_eventlo_miss++; | r->root_task_miss++; |
} else |
} else |
r->root_eventlo_miss = 0; | r->root_task_miss ^= r->root_task_miss; |
|
|
/* OK, lets get ready task !!! */ |
/* OK, lets get ready task !!! */ |
task = TAILQ_FIRST(&r->root_ready); |
task = TAILQ_FIRST(&r->root_ready); |