version 1.6, 2012/03/13 10:01:59
|
version 1.6.2.4, 2012/05/03 15:05:09
|
Line 93 sched_SetErr(int eno, char *estr, ...)
|
Line 93 sched_SetErr(int eno, char *estr, ...)
|
int |
int |
schedRegisterHooks(sched_root_task_t * __restrict root) |
schedRegisterHooks(sched_root_task_t * __restrict root) |
{ |
{ |
if (!root || (root->root_data.iov_base && root->root_data.iov_len)) | assert(root); |
return -1; | |
|
|
if (root->root_hooks.hook_root.fini) |
if (root->root_hooks.hook_root.fini) |
root->root_hooks.hook_root.fini(root, NULL); |
root->root_hooks.hook_root.fini(root, NULL); |
Line 471 schedCancelby(sched_root_task_t * __restrict root, sch
|
Line 470 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 480 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 | if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) |
while (!*killState) { | schedCall(task); |
if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) | } |
schedCall(task); | else |
} | /* trigger scheduler loop */ |
} else | while (!*killState && root && root->root_hooks.hook_exec.fetch) { |
while ((task = root->root_hooks.hook_exec.fetch(root, NULL))) | 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); |
schedCall(task); |
} |
|
|
|
return 0; |
return 0; |
} |
} |