/** Copied from the task_info struct during task_register(). */
int (*post_select)(struct sched *s, struct task *t);
/** Whether this task is active (>=0) or in error state (<0). */
- int error;
+ int status;
/** Position of the task in the task list of the scheduler. */
struct list_head node;
/** If less than zero, the task was notified by another task. */
struct task *t, *tmp;
list_for_each_entry_safe(t, tmp, &s->task_list, node) {
- if (t->error < 0)
+ if (t->status < 0)
continue;
if (t->notification != 0)
sched_min_delay(s);
static inline void call_post_select(struct sched *s, struct task *t)
{
#ifndef SCHED_DEBUG
- t->error = t->post_select(s, t);
+ t->status = t->post_select(s, t);
#else
struct timeval t1, t2, diff;
unsigned long pst;
clock_get_realtime(&t1);
- t->error = t->post_select(s, t);
+ t->status = t->post_select(s, t);
clock_get_realtime(&t2);
tv_diff(&t1, &t2, &diff);
pst = tv2ms(&diff);
unsigned num_running_tasks = 0;
list_for_each_entry_safe(t, tmp, &s->task_list, node) {
- if (t->error < 0) {
+ if (t->status < 0) {
if (t->dead) /* task has been reaped */
unlink_and_free_task(t);
continue;
}
call_post_select(s, t);
t->notification = 0;
- if (t->error >= 0)
+ if (t->status >= 0)
num_running_tasks++;
}
return num_running_tasks;
t = *tptr;
if (!t)
return 0;
- if (t->error >= 0)
+ if (t->status >= 0)
return 0;
if (t->dead) /* will be freed in sched_post_select() */
return 0;
*/
t->dead = true;
*tptr = NULL;
- return t->error;
+ return t->status;
}
/**
struct task *t, *tmp;
list_for_each_entry_safe(t, tmp, &s->task_list, node) {
- if (t->error >= 0)
+ if (t->status >= 0)
/* The task list should contain only terminated tasks. */
PARA_WARNING_LOG("shutting down running task %s\n",
t->name);
snprintf(t->name, sizeof(t->name) - 1, "%s", info->name);
t->name[sizeof(t->name) - 1] = '\0';
t->notification = 0;
- t->error = 0;
+ t->status = 0;
t->dead = false;
t->pre_select = info->pre_select;
t->post_select = info->post_select;
list_for_each_entry_safe(t, tmp, &s->task_list, node) {
char *tmp_msg;
tmp_msg = make_message("%s%p\t%s\t%s\n", msg? msg : "", t,
- t->error < 0? (t->dead? "dead" : "zombie") : "running",
+ t->status < 0? (t->dead? "dead" : "zombie") : "running",
t->name);
free(msg);
msg = tmp_msg;
return 0;
if (t->dead)
return 0;
- if (t->error >= 0)
+ if (t->status >= 0)
return 1;
- return t->error;
+ return t->status;
}
/**