--- libaitsched/inc/aitsched.h 2011/08/12 23:06:55 1.1.1.1.2.2 +++ libaitsched/inc/aitsched.h 2011/10/04 12:34:33 1.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsched.h,v 1.1.1.1.2.2 2011/08/12 23:06:55 misho Exp $ +* $Id: aitsched.h,v 1.2 2011/10/04 12:34:33 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -107,7 +107,7 @@ struct sched_HooksTask { typedef struct sched_HooksTask hooks_task_t; /* task callback, like pthread callback! */ -typedef void *(*sched_task_func_t)(void *); +typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/); /* task & queue */ struct sched_Task { @@ -115,6 +115,7 @@ struct sched_Task { sched_task_type_t task_type; sched_root_task_t *task_root; +#define TASK_ROOT(x) (x)->task_root sched_task_func_t task_func; void *task_arg; @@ -175,7 +176,7 @@ sched_root_task_t *schedInit(void ** __restrict data, * @root = root task * return: -1 error or 0 ok */ -int schedEnd(sched_root_task_t * __restrict root); +int schedEnd(sched_root_task_t ** __restrict root); /* * schedRegisterHooks() - Register IO handles and bind tasks to it * @root = root task @@ -197,9 +198,10 @@ inline void *schedFetch(sched_root_task_t * __restrict /* * schedRun() - Scheduler *run loop* * @root = root task + * @killState = kill condition variable, if !=0 stop scheduler loop * return: -1 error or 0 ok */ -int schedRun(sched_root_task_t * __restrict root); +int schedRun(sched_root_task_t * __restrict root, volatile intptr_t * __restrict killState); /* * schedCancel() - Cancel task from scheduler * @task = task