X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=sched.c;h=daf6603f7de5730bdbdc82c59b565c7c7d7338b8;hp=02793124f38b2c8a185dbe6fa7e1b27fd5306ab2;hb=3e90aa7f5505b265f62222eeb1fc77b525169a3f;hpb=f15a16b7a40e263ab7e86c9437fe9db0216ba605 diff --git a/sched.c b/sched.c index 02793124..daf6603f 100644 --- a/sched.c +++ b/sched.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2008 Andre Noll + * Copyright (C) 2006-2009 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -50,7 +50,7 @@ static void sched_preselect(struct sched *s) { struct task *t, *tmp; list_for_each_entry_safe(t, tmp, &pre_select_list, pre_select_node) { - if (t->error >= 0) + if (t->error >= 0 && t->pre_select) t->pre_select(s, t); // PARA_INFO_LOG("%s \n", t->status); if (t->error >= 0) @@ -105,6 +105,8 @@ int schedule(struct sched *s) if (!initialized) return -E_NOT_INITIALIZED; + if (!s->select_function) + s->select_function = para_select; gettimeofday(now, NULL); again: FD_ZERO(&s->rfds); @@ -114,7 +116,7 @@ again: sched_preselect(s); if (list_empty(&pre_select_list) && list_empty(&post_select_list)) return 0; - ret = para_select(s->max_fileno + 1, &s->rfds, &s->wfds, &s->timeout); + ret = s->select_function(s->max_fileno + 1, &s->rfds, &s->wfds, &s->timeout); if (ret < 0) return ret; gettimeofday(now, NULL); @@ -155,7 +157,7 @@ void register_task(struct task *t) list_add_tail(&t->pre_select_node, &pre_select_list); } if (t->post_select) { - PARA_DEBUG_LOG("post_select: %p\n", &t->pre_select); + PARA_DEBUG_LOG("post_select: %p\n", &t->post_select); list_add_tail(&t->post_select_node, &post_select_list); } }