|
@@ -221,25 +221,13 @@ static struct starpu_task * prio_pull_task(struct starpu_sched_component * compo
|
|
|
static int prio_can_push(struct starpu_sched_component * component)
|
|
|
{
|
|
|
STARPU_ASSERT(component && starpu_sched_component_is_prio(component));
|
|
|
- int ret = 0;
|
|
|
int res = 0;
|
|
|
-
|
|
|
- STARPU_ASSERT(component->nchildren == 1);
|
|
|
- struct starpu_sched_component * child = component->children[0];
|
|
|
struct starpu_task * task;
|
|
|
|
|
|
- while (1)
|
|
|
- {
|
|
|
- task = starpu_sched_component_pull_task(component,component);
|
|
|
- if (!task)
|
|
|
- break;
|
|
|
- ret = starpu_sched_component_push_task(component,child,task);
|
|
|
- if (ret)
|
|
|
- break;
|
|
|
- res = 1;
|
|
|
- }
|
|
|
- if(task && ret)
|
|
|
- prio_push_local_task(component,task,1);
|
|
|
+ task = starpu_sched_component_pump_downstream(component, &res);
|
|
|
+
|
|
|
+ if(task)
|
|
|
+ STARPU_ASSERT(!prio_push_local_task(component,task,1));
|
|
|
|
|
|
return res;
|
|
|
}
|