⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 salvo.h

📁 嵌入式操作系统Salvo 在单片机C8051F350上的移植
💻 H
📖 第 1 页 / 共 5 页
字号:
 #if ( OSEVENT_FLAGS == 0 )
  #undef OSEVENT_FLAGS
  #define OSEVENT_FLAGS                 1
 #endif
#endif


/* must have at least one message queue if they're enabled. */
/*  An exception exists when using libraries -- you want to */
/*  be able to remove them entirely from your memory map.   */
#if OSENABLE_MESSAGE_QUEUES && !OSUSE_LIBRARY
 #if ( OSMESSAGE_QUEUES == 0 )
  #undef OSMESSAGE_QUEUES
  #define OSMESSAGE_QUEUES              1
 #endif
#endif


/* statistics must have counters enabled and > 0 */
#if OSGATHER_STATISTICS
 #if ( OSBYTES_OF_COUNTS == 0 )
 #undef OSBYTES_OF_COUNTS
 #define OSBYTES_OF_COUNTS              1
 #endif
 #if !defined(OSBYTES_OF_COUNTS)
 #define OSBYTES_OF_COUNTS              1
 #endif
#endif


/* message logging is only allowed if logging is enabled */
#if OSLOG_MESSAGES && !OSLOGGING
 #undef OSLOG_MESSAGES
 #define OSLOG_MESSAGES                 OSLOG_NONE
#endif

/* we only support 7 bits of lost tick collecting ... */
#if ( (OSMAX_LOST_TICKS < 1) || (OSMAX_LOST_TICKS > 255) )
#error salvo.h: OSMAX_LOST_TICKS must be > 0 and < 256.
#endif


/* makes sense, esp. for timestamp stuff. */
#if OSBYTES_OF_TICKS && OSBYTES_OF_DELAYS
 #if ( OSBYTES_OF_TICKS < OSBYTES_OF_DELAYS )
 #error salvo.h: OSBYTES_OF_TICKS must be greater than or equal to OSBYTES_OF_DELAYS
 #endif
#endif
 
 
/************************************************************
****                                                     ****
**                                                         **
Special SALVO configurations.

meta-#defines based on lower-level #defines.

**                                                         **
****                                                     ****
************************************************************/
#if defined(OSENABLE_COUNTS)
#undef OSENABLE_COUNTS
#endif
#if OSBYTES_OF_COUNTS
#define OSENABLE_COUNTS                 TRUE
#else
#define OSENABLE_COUNTS                 FALSE
#endif

#if defined(OSENABLE_DELAYS)
#undef OSENABLE_DELAYS
#endif
#if OSBYTES_OF_DELAYS
#define OSENABLE_DELAYS                 TRUE
#else
#define OSENABLE_DELAYS                 FALSE
#endif

#if defined(OSENABLE_ERROR_CHECKING)
#undef OSENABLE_ERROR_CHECKING
#endif
#define OSENABLE_ERROR_CHECKING         !OSDISABLE_ERROR_CHECKING

#if OSENABLE_EVENT_TRYING
#undef OSENABLE_EVENT_READING
#define OSENABLE_EVENT_READING          TRUE
#endif

#if defined(OSENABLE_TICKS)
#undef OSENABLE_TICKS
#endif
#if OSBYTES_OF_TICKS
#define OSENABLE_TICKS                  TRUE
#else
#define OSENABLE_TICKS                  FALSE
#endif

#if defined(OSENABLE_PRESCALAR)
#undef OSENABLE_PRESCALAR
#endif
#if ( OSTIMER_PRESCALAR >= 1 )    /* avoid TRUE/FALSE problems with big PS */
#define OSENABLE_PRESCALAR              TRUE
#else
#define OSENABLE_PRESCALAR              FALSE
#endif

#if defined(OSENABLE_EVENTS)
#undef OSENABLE_EVENTS
#endif
#if OSEVENTS && ( OSENABLE_BINARY_SEMAPHORES \
   || OSENABLE_SEMAPHORES     || OSENABLE_MESSAGES \
   || OSENABLE_MESSAGE_QUEUES || OSENABLE_EVENT_FLAGS )
#define OSENABLE_EVENTS                 TRUE
#else
#define OSENABLE_EVENTS                 FALSE
#endif

#if defined(OSENABLE_TASKS)
#undef OSENABLE_TASKS
#endif
#if OSTASKS
#define OSENABLE_TASKS                  TRUE
#else
#define OSENABLE_TASKS                  FALSE
#endif


#if defined(OSARRAY_SIZE_IS_BYTE)
#undef OSARRAY_SIZE_IS_BYTE
#endif
#if defined(OSARRAY_SIZE_IS_WORD)
#undef OSARRAY_SIZE_IS_WORD
#endif
#if OSUSE_ARRAYS
#if ( OSTASKS < 9 )
#define OSARRAY_SIZE_IS_BYTE            TRUE
#else
#define OSARRAY_SIZE_IS_WORD            TRUE
#endif
#endif


#if OSENABLE_EVENTS \
  || ( OSCALL_OSSTARTTASK == OSFROM_FOREGROUND ) \
  || ( OSCALL_OSSTARTTASK == OSFROM_ANYWHERE )
#define OSENABLE_SIGQ                   TRUE
#else
#define OSENABLE_SIGQ                   FALSE
#endif
                                        

/************************************************************
****                                                     ****
**                                                         **
Compiler- and target-specific special settings

**                                                         **
****                                                     ****
************************************************************/


/************************************************************
****                                                     ****
**                                                         **
Salvo's native typedefs.

**                                                         **
****                                                     ****
************************************************************/
typedef unsigned char OStypeBoolean;   /* FALSE or TRUE       */
typedef signed char   OStypeInt8;      /* -128 to +127        */
typedef unsigned char OStypeInt8u;     /* 0 to +255           */
typedef signed int    OStypeInt16;     /* -32768 to +32767    */
typedef unsigned int  OStypeInt16u;    /* 0 to +65,535        */
typedef signed long   OStypeInt32;     /* -2.1B to +2.1B      */
typedef unsigned long OStypeInt32u;    /* 0 to +4,294,967,295 */

typedef OStypeInt8u OStypePrio;        /* 16 unique priorities */
#define OStypeCTMode OStypePrio            /* synonymous */
typedef OStypeInt8u OStypeState;       /* 8 unique states      */
typedef OStypeInt8u OStypeOption;      /* generic option type, */
                                       /*  e.g. for eFlgs      */
                                                                                        
typedef OStypeInt8u  OStypeEType;      /* 256 event types      */                            
typedef OStypeInt8u  OStypeDepth;      /* 256 stack depth      */
typedef OStypeInt8u  OStypeID;         /* 256 IDs              */

typedef OStypeInt8u  OStypeErr;        /* 8-bit return (error) */
									   /*  codes               */
                                
typedef struct ecb  OStypeEcb;         /* event control block  */
typedef struct tcb  OStypeTcb;         /* task control block   */
typedef struct mqcb OStypeMqcb;        /* msg Q control block  */
typedef struct efcb OStypeEfcb;        /* ev flag control block*/

typedef OSTYPE_TCBEXT0 OStypeTcbExt0;  /* user-definable tcb   */
typedef OSTYPE_TCBEXT1 OStypeTcbExt1;  /*  extension types     */
typedef OSTYPE_TCBEXT2 OStypeTcbExt2;  /*                      */
typedef OSTYPE_TCBEXT3 OStypeTcbExt3;  /*                      */
typedef OSTYPE_TCBEXT4 OStypeTcbExt4;  /*                      */
typedef OSTYPE_TCBEXT5 OStypeTcbExt5;  /*                      */


/* NOTE: OStypeBoolean, OStypeBinSem and OStypeSem                 */
/* (!OSBIG_SEMAPHORES) are all alike -- event processing expects   */
/*  and requires this.  See OSWaitXXX(). Also OStypeMsgQSize       */

typedef OStypeBoolean OStypeBinSem;    /* binSems are just 0 or 1  */

#if !OSBIG_SEMAPHORES                  /* small semaphores have a  */
typedef OStypeInt8u OStypeSem;         /*  maximum value of 255,   */
#define MAX_SEM 255                    /*  big ones 32,767         */
#else            
typedef OStypeInt16u OStypeSem;    
#define MAX_SEM 32767                    
#endif /* #if !OSBIG_SEMAPHORES  */            

typedef OStypeInt8u OStypeMsgQSize;    /* 255 messages per queue   */
typedef OStypeMsgQSize * OStypeMsgQSizeP;                    

#if OSUSE_ARRAYS                                
#if OSARRAY_SIZE_IS_BYTE
typedef OStypeInt8u OStypePrioA;       /* size of priority arrays  */
#else                                  /*  depends on the number   */
typedef OStypeInt16u OStypePrioA;      /*  of tasks                */
#endif
#endif




/************************************************************ 
****                                                     ****
**                                                         **
Port-specific symbol defaults.

These are a safety net in case the symbol is not set in
portxxxx.c and the default is not desired.

**                                                         **
****                                                     ****
************************************************************/
#if !defined(OSBYTES_OF_FRAMEP)
#define OSBYTES_OF_FRAMEP               2 
#endif 

#if !defined(OSBYTES_OF_SRGIE)
#define OSBYTES_OF_SRGIE                2 
#endif 

#if !defined(OSCTXSW_METHOD)
#define OSCTXSW_METHOD                  OSVIA_OSCTXSW
#endif

#if !defined(OSCLEAR_WATCHDOG_TIMER)
#define OSCLEAR_WATCHDOG_TIMER()
#endif

#if !defined(OSLOC_DEFAULT)
#define OSLOC_DEFAULT
#endif

#if !defined(OSMESSAGE_TYPE)
#define OSMESSAGE_TYPE                  void
#endif

#if !defined(OSMONITOR_KEYWORD_PRE) && !defined(OSMONITOR_KEYWORD_POST)
#define OSMONITOR_KEYWORD_EXISTS        FALSE
#define    OSMONITOR_KEYWORD_PRE
#define    OSMONITOR_KEYWORD_PRE_PROTO
#define    OSMONITOR_KEYWORD_POST
#define    OSMONITOR_KEYWORD_POST_PROTO
#else
#define OSMONITOR_KEYWORD_EXISTS        TRUE
#if   !defined(OSMONITOR_KEYWORD_PRE)
#define OSMONITOR_KEYWORD_PRE
#define OSMONITOR_KEYWORD_PRE_PROTO
#elif !defined(OSMONITOR_KEYWORD_POST)
#define OSMONITOR_KEYWORD_POST
#define OSMONITOR_KEYWORD_POST_PROTO
#endif
#endif

#if !defined(NULL)
#define NULL                            ((void *) 0)
#endif

#if !defined(OSProtect)
#define OSProtect()
#endif

#if !defined(OSRtnToOSSched)
#define OSRtnToOSSched()                return
#endif
                                        
#if !defined(OSRTNADDR_OFFSET)
#define OSRTNADDR_OFFSET                0
#endif
                                        
#if !defined(OSSCHED_RETURN_LABEL)
#define OSSCHED_RETURN_LABEL()
#endif

#if !defined(OSTASK_POINTER_TYPE)
#define OSTASK_POINTER_TYPE
#endif

#if !defined(OSUnprotect)
#define OSUnprotect()
#endif    
                                        
#if !defined(OSUSE_CHAR_SIZED_BITFIELDS)
#define OSUSE_CHAR_SIZED_BITFIELDS      FALSE
#endif
#if ( OSUSE_CHAR_SIZED_BITFIELDS \
  && ( ( OSCOMPILER == OSHT_8051C ) \
  || ( ( OSCOMPILER == OSIAR_ICC ) && ( OSTARGET == OSMSP430 ) ) ) )
#error salvo.h: selected compiler does not support bitfield packing.
#endif

#if !defined(OSUSE_EXTERN_ARRAY_SIZES)        
#define OSUSE_EXTERN_ARRAY_SIZES        FALSE    
#endif    

#if !defined(OSUSE_MEMSET)
#define OSUSE_MEMSET                    FALSE
#endif    

#if !defined(OSUSE_PRINTF_P_FORMAT)
#define OSUSE_PRINTF_P_FORMAT           FALSE
#endif
                                    
/************************************************************ 
****                                                     ****
**                                                         **
Numeric Type Definitions:

**                                                         **
****                                                     ****
************************************************************/
#if   OSBYTES_OF_COUNTS == 1
typedef OStypeInt8u  OStypeCount;
#elif OSBYTES_OF_COUNTS == 2 
typedef OStypeInt16u OStypeCount;
#elif OSBYTES_OF_COUNTS == 4 
typedef    OStypeInt32u OStypeCount;
#else
typedef OStypeInt8u OStypeCount;
#endif 
    
#if   OSBYTES_OF_DELAYS == 1 
typedef OStypeInt8u  OStypeDelay;     
typedef OStypeInt8   OStypeInterval; 
#elif OSBYTES_OF_DELAYS == 2
typedef OStypeInt16u OStypeDelay;  
typedef OStypeInt16  OStypeInterval; 
#elif OSBYTES_OF_DELAYS == 4
typedef OStypeInt32u OStypeDelay;
typedef OStypeInt32  OStypeInterval; 
#else
typedef OStypeInt8u OStypeDelay;     
typedef OStypeInt8  OStypeInterval; 
#endif 

#define OStypeTS OStypeDelay /* synonymous */

#if   OSBYTES_OF_EVENT_FLAGS == 1 
typedef OStypeInt8u  OStypeEFlag;     
#elif OSBYTES_OF_EVENT_FLAGS == 2
typedef OStypeInt16u OStypeEFlag;  
#elif OSBYTES_OF_EVENT_FLAGS == 4
typedef OStypeInt32u OStypeEFlag;
#else
typedef OStypeInt8u OStypeEFlag;     
#endif 

#if   OSBYTES_OF_FRAMEP == 1      
typedef OStypeInt8u  OStypeFrameP;    
#elif OSBYTES_OF_FRAMEP == 2 
typedef OStypeInt16u OStypeFrameP; 
#elif OSBYTES_OF_FRAMEP == 4      
typedef OStypeInt32u OStypeFrameP;
#else
typedef OStypeInt8u  OStypeFrameP;          
#endif 

#if   OSBYTES_OF_TICKS == 1      
typedef OStypeInt8u  OStypeTick;    
#elif OSBYTES_OF_TICKS == 2 
typedef OStypeInt16u OStypeTick; 
#elif OSBYTES_OF_TICKS == 4      
typedef OStypeInt32u OStypeTick;
#else
typedef OStypeInt8u OStypeTick;          
#endif 

#if   OSBYTES_OF_SRGIE == 1      
typedef OStypeInt8u  OStypeSRGIE;    
#elif OSBYTES_OF_SRGIE == 2 
typedef OStypeInt16u OStypeSRGIE; 
#elif OSBYTES_OF_SRGIE == 4      
typedef OStypeInt32u OStypeSRGIE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -