--- libaitsched/src/aitsched.c 2013/10/21 13:42:40 1.20.2.1 +++ libaitsched/src/aitsched.c 2014/01/28 13:17:33 1.24 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsched.c,v 1.20.2.1 2013/10/21 13:42:40 misho Exp $ +* $Id: aitsched.c,v 1.24 2014/01/28 13:17:33 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 +Copyright 2004 - 2014 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -335,6 +335,10 @@ schedFetch(sched_root_task_t * __restrict root) int schedTrigger(sched_task_t * __restrict task) { +#ifdef KQ_DISABLE + sched_SetErr(ENOTSUP, "disabled kqueue support"); + return -1; +#else #ifndef EVFILT_USER sched_SetErr(ENOTSUP, "Not supported kevent() filter"); return -1; @@ -357,6 +361,7 @@ schedTrigger(sched_task_t * __restrict task) return 0; #endif +#endif /* KQ_DISABLE */ } /* @@ -441,7 +446,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 +580,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 +686,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 +825,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 +954,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 +977,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;