--- libaitsched/src/aitsched.c 2011/10/04 12:34:33 1.2 +++ libaitsched/src/aitsched.c 2011/10/04 20:31:39 1.2.2.4 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsched.c,v 1.2 2011/10/04 12:34:33 misho Exp $ +* $Id: aitsched.c,v 1.2.2.4 2011/10/04 20:31:39 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -104,6 +104,7 @@ schedRegisterHooks(sched_root_task_t * __restrict root root->root_hooks.hook_exec.cancel = sched_hook_cancel; root->root_hooks.hook_exec.fetch = sched_hook_fetch; + root->root_hooks.hook_exec.exception = sched_hook_exception; root->root_hooks.hook_root.init = sched_hook_init; root->root_hooks.hook_root.fini = sched_hook_fini; @@ -332,7 +333,7 @@ schedCancelby(sched_root_task_t * __restrict root, sch break; } } else if (criteria == CRITERIA_TV) { - if (&TASK_TV(task) == (struct timeval*) param) { + if (!memcmp(&TASK_TV(task), param, sizeof(struct timeval))) { flg++; break; } @@ -378,8 +379,10 @@ schedRun(sched_root_task_t * __restrict root, volatile return -1; if (root->root_hooks.hook_exec.fetch) { if (killState) - while (!*killState && (task = root->root_hooks.hook_exec.fetch(root, NULL))) - schedCall(task); + while (!*killState) { + if ((task = root->root_hooks.hook_exec.fetch(root, NULL))) + schedCall(task); + } else while ((task = root->root_hooks.hook_exec.fetch(root, NULL))) schedCall(task);