--- libaitsched/src/aitsched.c 2013/11/14 21:37:27 1.22 +++ libaitsched/src/aitsched.c 2013/11/21 14:39:10 1.23 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsched.c,v 1.22 2013/11/14 21:37:27 misho Exp $ +* $Id: aitsched.c,v 1.23 2013/11/21 14:39:10 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -441,7 +441,7 @@ schedQuery(sched_task_t * __restrict task) * @type = query from queue type, if =taskMAX query same task from all queues * @criteria = find task by criteria * [ CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL| - * CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA ] + * CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA|CRITERIA_DATLEN ] * @param = search parameter * return: -1 error, 0 found or 1 not found */ @@ -575,6 +575,10 @@ schedQueryby(sched_root_task_t * __restrict root, sche if (TASK_DATA(task) == param) return 0; /* found */ break; + case CRITERIA_DATLEN: + if (TASK_DATLEN(task) == (size_t) param) + return 0; /* found */ + break; default: sched_SetErr(EINVAL, "Invalid parameter criteria %d", criteria); @@ -677,7 +681,7 @@ schedCancel(sched_task_t * __restrict task) * @type = cancel from queue type, if =taskMAX cancel same task from all queues * @criteria = find task by criteria * [ CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL| - * CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA ] + * CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA|CRITERIA_DATLEN ] * @param = search parameter * @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 @@ -816,6 +820,10 @@ schedCancelby(sched_root_task_t * __restrict root, sch if (TASK_DATA(task) == param) flg = 1; break; + case CRITERIA_DATLEN: + if (TASK_DATLEN(task) == (size_t) param) + flg = 1; + break; default: sched_SetErr(EINVAL, "Invalid parameter criteria %d", criteria); flg = -1; @@ -941,7 +949,7 @@ schedTermCondition(sched_root_task_t * __restrict root * * @root = root task * @criteria = find task by criteria - * [CRITERIA_ANY|CRITERIA_ID|CRITERIA_DATA] + * [CRITERIA_ANY|CRITERIA_ID|CRITERIA_VAL|CRITERIA_DATA] * @param = search parameter (sched_task_t *task| unsigned long id) * return: -1 error or 0 resumed ok */ @@ -964,6 +972,7 @@ schedResumeby(sched_root_task_t * __restrict root, u_c flg = 1; break; case CRITERIA_ID: + case CRITERIA_VAL: if (TASK_VAL(task) == (u_long) param) flg = 1; break;