X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=sched.c;h=7d91797a4c43139f63bab245d6e904378d80f49a;hp=6da5fa23c1bfffe02ace0f6277ccf448e8e5b632;hb=0a5226b8f6b9131024893f35de615d0b829afe27;hpb=7ff087268774d4bb7838a8575d2d9471ab52a27d diff --git a/sched.c b/sched.c index 6da5fa23..7d91797a 100644 --- a/sched.c +++ b/sched.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 Andre Noll + * Copyright (C) 2006-2011 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -38,16 +38,15 @@ static void unregister_task(struct task *t) { if (!initialized) return; + assert(t->error < 0); PARA_INFO_LOG("unregistering %s (%s)\n", t->status, - t->error <0? para_strerror(-t->error) : "shutdown"); + para_strerror(-t->error)); if (t->pre_select) list_del(&t->pre_select_node); if (t->post_select) list_del(&t->post_select_node); - t->error = -E_TASK_UNREGISTERED; } - static void sched_preselect(struct sched *s) { struct task *t, *tmp; @@ -207,10 +206,14 @@ void sched_shutdown(void) if (!initialized) return; - list_for_each_entry_safe(t, tmp, &pre_select_list, pre_select_node) + list_for_each_entry_safe(t, tmp, &pre_select_list, pre_select_node) { + t->error = -E_SCHED_SHUTDOWN; unregister_task(t); - list_for_each_entry_safe(t, tmp, &post_select_list, post_select_node) + } + list_for_each_entry_safe(t, tmp, &post_select_list, post_select_node) { + t->error = -E_SCHED_SHUTDOWN; unregister_task(t); + } initialized = 0; }