|
|
| version 1.9.2.3, 2012/05/31 21:36:40 | version 1.11.2.2, 2012/08/01 12:49:26 |
|---|---|
| Line 62 SUCH DAMAGE. | Line 62 SUCH DAMAGE. |
| #define CRITERIA_VAL 4 | #define CRITERIA_VAL 4 |
| #define CRITERIA_TS 5 | #define CRITERIA_TS 5 |
| #define CRITERIA_DATA 6 | #define CRITERIA_DATA 6 |
| #define CRITERIA_ID 7 | |
| /* early declaration for root & task */ | /* early declaration for root & task */ |
| Line 75 typedef enum { | Line 76 typedef enum { |
| taskALARM, | taskALARM, |
| taskNODE, | taskNODE, |
| taskPROC, | taskPROC, |
| taskUSER, | |
| taskSIGNAL, | taskSIGNAL, |
| taskAIO, | |
| taskUSER, | |
| taskEVENT, | taskEVENT, |
| taskEVENTLO, | taskEVENTLO, |
| taskSUSPEND, | |
| taskREADY, | taskREADY, |
| taskUNUSE, | taskUNUSE, |
| taskMAX | taskMAX |
| Line 100 struct sched_HooksTask { | Line 103 struct sched_HooksTask { |
| sched_hook_func_t node; | sched_hook_func_t node; |
| /* proc(sched_task_t *task, NULL) -> int */ | /* proc(sched_task_t *task, NULL) -> int */ |
| sched_hook_func_t proc; | sched_hook_func_t proc; |
| /* user(sched_task_t *task, NULL) -> int */ | |
| sched_hook_func_t user; | |
| /* signal(sched_task_t *task, NULL) -> int */ | /* signal(sched_task_t *task, NULL) -> int */ |
| sched_hook_func_t signal; | sched_hook_func_t signal; |
| /* aio(sched_task_t *task, NULL) -> int */ | |
| sched_hook_func_t aio; | |
| /* user(sched_task_t *task, NULL) -> int */ | |
| sched_hook_func_t user; | |
| /* event(sched_task_t *task, NULL) -> int */ | /* event(sched_task_t *task, NULL) -> int */ |
| sched_hook_func_t event; | sched_hook_func_t event; |
| /* eventlo(sched_task_t *task, NULL) -> int */ | /* eventlo(sched_task_t *task, NULL) -> int */ |
| sched_hook_func_t eventlo; | sched_hook_func_t eventlo; |
| /* suspend(sched_task_t *task, NULL) -> int */ | |
| sched_hook_func_t suspend; | |
| } hook_add; | } hook_add; |
| struct { | struct { |
| /* cancel(sched_task_t *task, NULL) -> int */ | /* cancel(sched_task_t *task, NULL) -> int */ |
| sched_hook_func_t cancel; | sched_hook_func_t cancel; |
| /* resume(sched_task_t *task, NULL) -> int */ | |
| sched_hook_func_t resume; | |
| /* run(sched_root_task_t *root, NULL) -> int */ | /* run(sched_root_task_t *root, NULL) -> int */ |
| sched_hook_func_t run; | sched_hook_func_t run; |
| /* fetch(sched_root_task_t *root, NULL) -> sched_task_t* */ | /* fetch(sched_root_task_t *root, NULL) -> sched_task_t* */ |
| Line 184 struct sched_RootTask { | Line 193 struct sched_RootTask { |
| struct timespec root_wait; | struct timespec root_wait; |
| struct timespec root_poll; | struct timespec root_poll; |
| intptr_t root_cond; | intptr_t root_cond; |
| void *root_ret; | |
| pthread_mutex_t root_mtx[taskMAX]; | pthread_mutex_t root_mtx[taskMAX]; |
| Line 193 struct sched_RootTask { | Line 203 struct sched_RootTask { |
| sched_queue_t root_alarm; | sched_queue_t root_alarm; |
| sched_queue_t root_node; | sched_queue_t root_node; |
| sched_queue_t root_proc; | sched_queue_t root_proc; |
| sched_queue_t root_user; | |
| sched_queue_t root_signal; | sched_queue_t root_signal; |
| sched_queue_t root_aio; | |
| sched_queue_t root_user; | |
| sched_queue_t root_event; | sched_queue_t root_event; |
| sched_queue_t root_eventlo; | sched_queue_t root_eventlo; |
| sched_queue_t root_suspend; | |
| sched_queue_t root_ready; | sched_queue_t root_ready; |
| sched_queue_t root_unuse; | sched_queue_t root_unuse; |
| int root_eventlo_miss; | int root_eventlo_miss; |
| Line 207 struct sched_RootTask { | Line 219 struct sched_RootTask { |
| #define ROOT_DATLEN(x) (x)->root_data.iov_len | #define ROOT_DATLEN(x) (x)->root_data.iov_len |
| }; | }; |
| #define ROOT_QUEUE_EMPTY(x, _q) TAILQ_EMPTY(&((x)->root_##_q)) | #define ROOT_QUEUE_EMPTY(x, _q) TAILQ_EMPTY(&((x)->root_##_q)) |
| #define ROOT_RETURN(x) (x)->root_ret | |
| inline int sched_GetErrno(); | inline int sched_GetErrno(); |
| Line 289 int schedCancel(sched_task_t * __restrict task); | Line 302 int schedCancel(sched_task_t * __restrict task); |
| * @root = root task | * @root = root task |
| * @type = cancel from queue type, if =taskMAX 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 = find task by criteria |
| * [CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|CRITERIA_TS|CRITERIA_DATA] | * [CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA] |
| * @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, -2 error in sub-stage cancel execution, -3 error from custom hook or 0 ok | * return: -1 error, -2 error in sub-stage cancel execution, -3 error from custom hook or 0 ok |
| Line 390 sched_task_t *schedSignal(sched_root_task_t * __restri | Line 403 sched_task_t *schedSignal(sched_root_task_t * __restri |
| TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x))) | TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x))) |
| /* | /* |
| * schedAIO() - Add AIO task to scheduler queue | |
| * | |
| * @root = root task | |
| * @func = task execution function | |
| * @arg = 1st func argument | |
| * @acb = AIO cb structure address | |
| * @opt_data = Optional data | |
| * @opt_dlen = Optional data length | |
| * return: NULL error or !=NULL new queued task | |
| */ | |
| sched_task_t *schedAIO(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, | |
| unsigned long acb, void *opt_data, size_t opt_dlen); | |
| #define schedAIOSelf(x) schedAIO(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \ | |
| TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x))) | |
| /* | |
| * schedUser() - Add trigger USER task to scheduler queue | * schedUser() - Add trigger USER task to scheduler queue |
| * | * |
| * @root = root task | * @root = root task |
| Line 457 sched_task_t *schedEventLo(sched_root_task_t * __restr | Line 486 sched_task_t *schedEventLo(sched_root_task_t * __restr |
| unsigned long val, void *opt_data, size_t opt_dlen); | unsigned long val, void *opt_data, size_t opt_dlen); |
| #define schedEventLoSelf(x) schedEventLo(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \ | #define schedEventLoSelf(x) schedEventLo(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \ |
| TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x))) | TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x))) |
| /* | |
| * schedSuspend() - Add Suspended task to scheduler queue | |
| * | |
| * @root = root task | |
| * @func = task execution function | |
| * @arg = 1st func argument | |
| * @id = Trigger ID | |
| * @opt_data = Optional data | |
| * @opt_dlen = Optional user's trigger flags | |
| * return: NULL error or !=NULL new queued task | |
| */ | |
| sched_task_t *schedSuspend(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, | |
| unsigned long id, void *opt_data, size_t opt_dlen); | |
| #define schedSuspendSelf(x) schedUser(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \ | |
| TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x))) | |
| /* | |
| * schedResumeby() - Resume suspended task | |
| * | |
| * @root = root task | |
| * @criteria = find task by criteria | |
| * [CRITERIA_ANY|CRITERIA_ID|CRITERIA_DATA] | |
| * @param = search parameter (sched_task_t *task| u_long id) | |
| * return: -1 error or 0 resumed ok | |
| */ | |
| int schedResumeby(sched_root_task_t * __restrict root, unsigned char criteria, void *param); | |
| /* | /* |
| * schedCallOnce() - Call once from scheduler | * schedCallOnce() - Call once from scheduler |