version 1.6.2.1, 2012/04/24 13:29:28
|
version 1.6.2.3, 2012/04/26 08:15:22
|
Line 471 schedCancelby(sched_root_task_t * __restrict root, sch
|
Line 471 schedCancelby(sched_root_task_t * __restrict root, sch
|
* return: -1 error or 0 ok |
* return: -1 error or 0 ok |
*/ |
*/ |
int |
int |
schedRun(sched_root_task_t * __restrict root, volatile intptr_t * __restrict killState) | schedRun(sched_root_task_t *root, volatile intptr_t * __restrict killState) |
{ |
{ |
sched_task_t *task; |
sched_task_t *task; |
|
|
Line 481 schedRun(sched_root_task_t * __restrict root, volatile
|
Line 481 schedRun(sched_root_task_t * __restrict root, volatile
|
if (root->root_hooks.hook_exec.run) |
if (root->root_hooks.hook_exec.run) |
if (root->root_hooks.hook_exec.run(root, NULL)) |
if (root->root_hooks.hook_exec.run(root, NULL)) |
return -1; |
return -1; |
if (root->root_hooks.hook_exec.fetch) { | |
if (killState) { | if (killState) { |
if (root->root_hooks.hook_exec.condition) | if (root->root_hooks.hook_exec.condition) |
while (root->root_hooks.hook_exec.condition(root, (void*) killState)) { | /* condition scheduler loop */ |
if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) | while (root && root->root_hooks.hook_exec.fetch && |
schedCall(task); | root->root_hooks.hook_exec.condition && |
} | root->root_hooks.hook_exec.condition(root, (void*) killState)) { |
else | |
while (!*killState) { | |
if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) | |
schedCall(task); | |
} | |
} else | |
while (42) | |
if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) |
if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) |
schedCall(task); |
schedCall(task); |
} | } |
| else |
| /* trigger scheduler loop */ |
| while (!*killState && root && root->root_hooks.hook_exec.fetch) { |
| if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) |
| schedCall(task); |
| } |
| } else |
| /* infinite scheduler loop */ |
| while (root && root->root_hooks.hook_exec.fetch) |
| if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) |
| schedCall(task); |
|
|
return 0; |
return 0; |
} |
} |