--- libaitsched/inc/defs.h 2011/08/05 15:52:00 1.1 +++ libaitsched/inc/defs.h 2012/01/24 15:29:09 1.3.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: defs.h,v 1.1 2011/08/05 15:52:00 misho Exp $ +* $Id: defs.h,v 1.3.2.1 2012/01/24 15:29:09 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -56,11 +56,41 @@ SUCH DAMAGE. strlcpy(sched_Error, strerror(errno), STRSIZ); \ } +#define sched_timespecclear(tsp) ((tsp)->tv_sec = (tsp)->tv_nsec = 0) +#define sched_timespecinf(tsp) ((tsp)->tv_sec = (tsp)->tv_nsec = -1) +#define sched_timespecisinf(tsp) ((tsp)->tv_sec == -1 && (tsp)->tv_nsec == -1) +#define sched_timespecisset(tsp) (((tsp)->tv_sec && (tsp)->tv_sec != -1) || \ + ((tsp)->tv_nsec && (tsp)->tv_nsec != -1)) +#define sched_timespeccmp(tsp, usp, cmp) \ + (((tsp)->tv_sec == (usp)->tv_sec) ? \ + ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \ + ((tsp)->tv_sec cmp (usp)->tv_sec)) +#define sched_timespecadd(tsp, usp, vsp) \ + do { \ + (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \ + (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \ + if ((vsp)->tv_nsec >= 1000000000L) { \ + (vsp)->tv_sec++; \ + (vsp)->tv_nsec -= 1000000000L; \ + } \ + } while (0) +#define sched_timespecsub(tsp, usp, vsp) \ + do { \ + (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ + (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \ + if ((vsp)->tv_nsec < 0) { \ + (vsp)->tv_sec--; \ + (vsp)->tv_nsec += 1000000000L; \ + } \ + } while (0) extern int sched_Errno; extern char sched_Error[]; -inline void sched_SetErr(int eno, char *estr, ...); +inline void sched_SetErr(int, char *, ...); + +inline sched_task_t *_sched_useTask(sched_root_task_t * __restrict root); +inline sched_task_t *_sched_unuseTask(sched_task_t * __restrict task); #endif