--- libaitsched/src/aitsched.c 2013/05/30 09:13:52 1.18 +++ libaitsched/src/aitsched.c 2013/08/15 19:06:20 1.18.6.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsched.c,v 1.18 2013/05/30 09:13:52 misho Exp $ +* $Id: aitsched.c,v 1.18.6.2 2013/08/15 19:06:20 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -102,6 +102,9 @@ schedRegisterHooks(sched_root_task_t * __restrict root root->root_hooks.hook_add.read = sched_hook_read; root->root_hooks.hook_add.write = sched_hook_write; root->root_hooks.hook_add.alarm = sched_hook_alarm; +#if defined(HAVE_TIMER_CREATE) && defined(HAVE_TIMER_SETTIME) + root->root_hooks.hook_add.rtc = sched_hook_rtc; +#endif root->root_hooks.hook_add.node = sched_hook_node; root->root_hooks.hook_add.proc = sched_hook_proc; root->root_hooks.hook_add.signal = sched_hook_signal; @@ -167,6 +170,7 @@ schedInit(void ** __restrict data, size_t datlen) TAILQ_INIT(&root->root_write); TAILQ_INIT(&root->root_timer); TAILQ_INIT(&root->root_alarm); + TAILQ_INIT(&root->root_rtc); TAILQ_INIT(&root->root_node); TAILQ_INIT(&root->root_proc); TAILQ_INIT(&root->root_signal); @@ -228,6 +232,8 @@ schedEnd(sched_root_task_t ** __restrict root) schedCancel(task); TAILQ_FOREACH_SAFE(task, &(*root)->root_alarm, task_node, tmp) schedCancel(task); + TAILQ_FOREACH_SAFE(task, &(*root)->root_rtc, task_node, tmp) + schedCancel(task); TAILQ_FOREACH_SAFE(task, &(*root)->root_node, task_node, tmp) schedCancel(task); TAILQ_FOREACH_SAFE(task, &(*root)->root_proc, task_node, tmp) @@ -384,6 +390,9 @@ schedCancel(sched_task_t * __restrict task) case taskALARM: queue = &TASK_ROOT(task)->root_alarm; break; + case taskRTC: + queue = &TASK_ROOT(task)->root_rtc; + break; case taskNODE: queue = &TASK_ROOT(task)->root_node; break; @@ -466,6 +475,8 @@ schedCancelby(sched_root_task_t * __restrict root, sch return -2; if (schedCancelby(root, taskALARM, criteria, param, hook)) return -2; + if (schedCancelby(root, taskRTC, criteria, param, hook)) + return -2; if (schedCancelby(root, taskNODE, criteria, param, hook)) return -2; if (schedCancelby(root, taskPROC, criteria, param, hook)) @@ -503,6 +514,9 @@ schedCancelby(sched_root_task_t * __restrict root, sch break; case taskALARM: queue = &root->root_alarm; + break; + case taskRTC: + queue = &root->root_rtc; break; case taskNODE: queue = &root->root_node;