File:  [ELWIX - Embedded LightWeight unIX -] / libaitsched / inc / defs.h
Revision 1.7.6.1: download - view: text, annotated - select for diffs - revision graph
Wed Aug 8 08:15:23 2012 UTC (12 years, 1 month ago) by misho
Branches: sched2_7
Diff to: branchpoint 1.7: preferred, unified
remove eventlo tasks and added new kind of task, regular tasks
schedTask() is new api call with local regular tasks priority
added ability to acquire new regular task missing hit rate before firing task

    1: /*************************************************************************
    2: * (C) 2011 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
    3: *  by Michael Pounov <misho@openbsd-bg.org>
    4: *
    5: * $Author: misho $
    6: * $Id: defs.h,v 1.7.6.1 2012/08/08 08:15:23 misho Exp $
    7: *
    8: **************************************************************************
    9: The ELWIX and AITNET software is distributed under the following
   10: terms:
   11: 
   12: All of the documentation and software included in the ELWIX and AITNET
   13: Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   14: 
   15: Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
   16: 	by Michael Pounov <misho@elwix.org>.  All rights reserved.
   17: 
   18: Redistribution and use in source and binary forms, with or without
   19: modification, are permitted provided that the following conditions
   20: are met:
   21: 1. Redistributions of source code must retain the above copyright
   22:    notice, this list of conditions and the following disclaimer.
   23: 2. Redistributions in binary form must reproduce the above copyright
   24:    notice, this list of conditions and the following disclaimer in the
   25:    documentation and/or other materials provided with the distribution.
   26: 3. All advertising materials mentioning features or use of this software
   27:    must display the following acknowledgement:
   28: This product includes software developed by Michael Pounov <misho@elwix.org>
   29: ELWIX - Embedded LightWeight unIX and its contributors.
   30: 4. Neither the name of AITNET nor the names of its contributors
   31:    may be used to endorse or promote products derived from this software
   32:    without specific prior written permission.
   33: 
   34: THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND
   35: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   36: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   37: ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   38: FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   39: DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   40: OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   41: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   42: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   43: OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   44: SUCH DAMAGE.
   45: */
   46: #ifndef __DEFS_H
   47: #define __DEFS_H
   48: 
   49: 
   50: #ifndef STRSIZ
   51: #define STRSIZ			256
   52: #endif
   53: 
   54: #define KQ_EVENTS		32
   55: #define MAX_TASK_MISS		12
   56: 
   57: #define LOGERR	{ \
   58: 			sched_Errno = errno; \
   59: 			strlcpy(sched_Error, strerror(errno), STRSIZ); \
   60: 		}
   61: 
   62: #define sched_timespecclear(tsp)	((tsp)->tv_sec = (tsp)->tv_nsec = 0)
   63: #define sched_timespecinf(tsp)		((tsp)->tv_sec = (tsp)->tv_nsec = -1)
   64: #define sched_timespecisinf(tsp)	((tsp)->tv_sec == -1 && (tsp)->tv_nsec == -1)
   65: #define sched_timespecisset(tsp)	(((tsp)->tv_sec && (tsp)->tv_sec != -1) || \
   66: 						((tsp)->tv_nsec && (tsp)->tv_nsec != -1))
   67: #define sched_timespeccmp(tsp, usp, cmp)				\
   68: 	(((tsp)->tv_sec == (usp)->tv_sec) ?				\
   69: 		((tsp)->tv_nsec cmp (usp)->tv_nsec) :			\
   70: 		((tsp)->tv_sec cmp (usp)->tv_sec))
   71: #define sched_timespecadd(tsp, usp, vsp)				\
   72: 	do {								\
   73: 		(vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec;		\
   74: 		(vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec;	\
   75: 		if ((vsp)->tv_nsec >= 1000000000L) {			\
   76: 			(vsp)->tv_sec++;				\
   77: 			(vsp)->tv_nsec -= 1000000000L;			\
   78: 		}							\
   79: 	} while (0)
   80: #define sched_timespecsub(tsp, usp, vsp)				\
   81: 	do {								\
   82: 		(vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec;		\
   83: 		(vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec;	\
   84: 		if ((vsp)->tv_nsec < 0) {				\
   85: 			(vsp)->tv_sec--;				\
   86: 			(vsp)->tv_nsec += 1000000000L;			\
   87: 		}							\
   88: 	} while (0)
   89: 
   90: extern int sched_Errno;
   91: extern char sched_Error[];
   92: 
   93: inline void sched_SetErr(int, char *, ...);
   94: 
   95: inline sched_task_t *_sched_useTask(sched_root_task_t * __restrict root);
   96: inline sched_task_t *_sched_unuseTask(sched_task_t * __restrict task);
   97: 
   98: 
   99: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>