|
|
| version 1.2.2.5, 2011/11/30 23:41:50 | version 1.4.2.2, 2012/01/08 02:52:29 |
|---|---|
| Line 70 typedef enum { | Line 70 typedef enum { |
| taskWRITE, | taskWRITE, |
| taskTIMER, | taskTIMER, |
| taskEVENT, | taskEVENT, |
| taskEVENTLO, | |
| taskREADY, | taskREADY, |
| taskUNUSE, | taskUNUSE, |
| taskMAX | taskMAX |
| Line 114 typedef struct sched_HooksTask hooks_task_t; | Line 115 typedef struct sched_HooksTask hooks_task_t; |
| /* task callback, like pthread callback! */ | /* task callback, like pthread callback! */ |
| typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/); | typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/); |
| /* task lock helpers */ | |
| #define TASK_LOCK(x) ((x)->task_lock++) | |
| #define TASK_UNLOCK(x) ((x)->task_lock ^= (x)->task_lock) | |
| #define TASK_ISLOCKED(x) ((x)->task_lock) | |
| /* task & queue */ | /* task & queue */ |
| struct sched_Task { | struct sched_Task { |
| volatile int task_lock; | |
| unsigned int task_id; | unsigned int task_id; |
| sched_task_type_t task_type; | sched_task_type_t task_type; |
| #define TASK_TYPE(x) (x)->task_type | |
| sched_root_task_t *task_root; | sched_root_task_t *task_root; |
| #define TASK_ROOT(x) (x)->task_root | #define TASK_ROOT(x) (x)->task_root |
| Line 146 typedef TAILQ_HEAD(, sched_Task) sched_queue_t; | Line 154 typedef TAILQ_HEAD(, sched_Task) sched_queue_t; |
| struct sched_RootTask { | struct sched_RootTask { |
| int root_kq; | int root_kq; |
| struct timeval root_wait; | struct timeval root_wait; |
| pthread_mutex_t root_mtx[taskMAX]; | |
| sched_queue_t root_read; | sched_queue_t root_read; |
| sched_queue_t root_write; | sched_queue_t root_write; |
| Line 165 struct sched_RootTask { | Line 174 struct sched_RootTask { |
| inline int sched_GetErrno(); | inline int sched_GetErrno(); |
| inline const char *sched_GetError(); | inline const char *sched_GetError(); |
| inline void sched_SetErr(int, char *, ...); | |
| /* | /* |
| Line 216 int schedCancel(sched_task_t * __restrict task); | Line 224 int schedCancel(sched_task_t * __restrict task); |
| /* | /* |
| * schedCancelby() - Cancel task from scheduler by criteria | * schedCancelby() - Cancel task from scheduler by criteria |
| * @root = root task | * @root = root task |
| * @queue = cancel from queue, if =NULL cancel same task from all queues | * @type = cancel from queue type, if =taskMAX cancel same task from all queues |
| * @criteria = find task by criteria [CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|CRITERIA_TV] | * @criteria = find task by criteria [CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|CRITERIA_TV] |
| * @param = search parameter | * @param = search parameter |
| * @hook = custom cleanup hook function, may be NULL | * @hook = custom cleanup hook function, may be NULL |
| * return: -1 error or 0 ok | * return: -1 error, -2 error in sub-stage cancel execution, -3 error from custom hook or 0 ok |
| */ | */ |
| int schedCancelby(sched_root_task_t * __restrict root, sched_queue_t * __restrict queue, | int schedCancelby(sched_root_task_t * __restrict root, sched_task_type_t type, |
| u_char criteria, void *param, sched_hook_func_t hook); | u_char criteria, void *param, sched_hook_func_t hook); |