* If the pre_select pointer of \a t is not \p NULL, it is removed from
* the pre_select list of the scheduler. Same goes for \a post_select.
*/
-void unregister_task(struct task *t)
+static void unregister_task(struct task *t)
{
if (!initialized)
return;
- PARA_INFO_LOG("unregistering %s (%p)\n", t->status, t);
+ PARA_INFO_LOG("unregistering %s (%s)\n", t->status,
+ t->error <0? para_strerror(-t->error) : "shutdown");
if (t->pre_select)
list_del(&t->pre_select_node);
if (t->post_select)
list_del(&t->post_select_node);
- if (t->error >= 0)
- t->error = -E_TASK_KILLED;
+ t->error = -E_TASK_UNREGISTERED;
};
if (strcmp(id, buf))
continue;
t->error = -E_TASK_KILLED;
- unregister_task(t);
return 1;
}
list_for_each_entry_safe(t, tmp, &post_select_list, post_select_node) {
if (strcmp(id, buf))
continue;
t->error = -E_TASK_KILLED;
- unregister_task(t);
return 1;
}
return -E_NO_SUCH_TASK;