vxWorks.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:7k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* vxWorks.h - VxWorks standard definitions header */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 03p,27nov01,mrs  Fix to conform to ANSI standard for token pasting.
  7. 03o,31oct01,tdl  Check for preexsiting __P def before defining it
  8. 03n,18oct01,dat  Chg TOOLCHAIN to TOOL_FAMILY
  9. 03m,24sep01,gls  Added definition of __P() macro (SPR #28330)
  10. 03l,28sep01,rae  added #define _WRS_VXWORKS_5_X
  11. 03k,19sep01,dat  Rework of gnu-diab changes
  12. 03j,08sep01,dat  Gnu-Diab infrastructure
  13. 03i,20aug01,dat  Gnu-Diab, added #include toolMacros.h
  14. 03h,17feb99,mrs  Add C++ support for NULL, (SPR #25079).
  15. 03g,25nov97,dat  added BUS_TYPE macros
  16. 03f,26nov96,vin  modified BSD to 44.
  17. 03e,23aug94,ism  added the MSW() and LSW() macros (SPR#3541)
  18. 03d,22sep92,rrr  added support for c++
  19. 03c,07sep92,smb  added #undef BSD to remove previous definition
  20. 03b,11jul92,smb  moved CPU definitions to types/vxCpu.h
  21. 03a,04jul92,jcf  cleaned up.
  22. 02q,28jun92,smb  reworked for ANSI lib.
  23. 02p,22jun92,rrr  added MIPS CPU_FAMILY
  24. 02o,16jun92,jwt  added (CPU_FAMILY = SPARC) for (CPU == SPARClite).
  25. 02n,26may92,rrr  the tree shuffle
  26. 02m,17mar92,yao  added _STACK_GROWS_DOWN/UP.  added macros ROUND_UP/DOWN,
  27.  ALIGNED, MEM_ROUND_UP/DOWN, STACK_ROUND_UP/DOWN, MEM_ALIGNED.
  28.  changed copyright notice.  included arch.h.  moved ffsMSB
  29.  definitions for 960 to changed BYTE_ORDER to _BYTE_ORDER,
  30.  BIG/LITTLE_ENDIAN to _BIG/LITTLE_ENDIAN.  arch960.h.  removed
  31.  conditional include of r3k/arch.h.
  32. 02l,09jan91,wmd  conditionalized out ffsMSB inline definition to shut up
  33.    ansi warnings.
  34. 02k,11nov91,jpb  added definition for R3K CPU_FAMILY.
  35. 02j,28oct91,wmd  for lack of better place -  added Intel's 960 ffsMSB
  36.  inline definition here.
  37. 02i,04oct91,rrr  passed through the ansification filter
  38.   -fixed #else and #endif
  39.   -changed READ, WRITE and UPDATE to O_RDONLY O_WRONLY and ...
  40.   -changed copyright notice
  41. 02h,25sep91,yao  added CPU32.
  42. 02g,10sep91,wmd  added MIPS to conditional for BIG_ENDIAN byte order.
  43. 02f,20aug91,ajm  added MIPS_R3k support.
  44. 02e,14aug91,del  (intel) added I960KA/KB defines.
  45. 02d,29apr91,hdn  added defines and macros for TRON architecture
  46. 02c,31mar91,del  added #define of BYTE_ORDER for network etc.
  47. 02b,25oct90,dnw  changed to allow NULL to be redefined.
  48. 02a,25oct90,shl  combined CPU test for I960KB and I960CA into one.
  49. ...deleted pre v2a history - see RCS
  50. */
  51. #ifndef __INCvxWorksh
  52. #define __INCvxWorksh
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56. #if !defined(NULL)
  57. #if defined __GNUG__
  58. #define NULL (__null)
  59. #else
  60. #if !defined(__cplusplus) && 0
  61. #define NULL ((void*)0)
  62. #else
  63. #define NULL (0)
  64. #endif
  65. #endif
  66. #endif
  67. #if !defined(EOF) || (EOF!=(-1))
  68. #define EOF (-1)
  69. #endif
  70. #if !defined(FALSE) || (FALSE!=0)
  71. #define FALSE 0
  72. #endif
  73. #if !defined(TRUE) || (TRUE!=1)
  74. #define TRUE 1
  75. #endif
  76. #define NONE (-1) /* for times when NULL won't do */
  77. #define EOS '' /* C string terminator */
  78. /* return status values */
  79. #define OK 0
  80. #define ERROR (-1)
  81. /* timeout defines */
  82. #define NO_WAIT 0
  83. #define WAIT_FOREVER (-1)
  84. /* low-level I/O input, output, error fd's */
  85. #define STD_IN 0
  86. #define STD_OUT 1
  87. #define STD_ERR 2
  88. /* modes - must match O_RDONLY/O_WRONLY/O_RDWR in ioLib.h! */
  89. #define VX_READ 0
  90. #define VX_WRITE 1
  91. /* SYSTEM types */
  92. #define V7 1 /* ATT version 7 */
  93. #define SYS_V 2 /* ATT System 5 */
  94. #define BSD_4_2 3 /* Berkeley BSD 4.2 */
  95. /* BUS types */
  96. #define BUS_TYPE_NONE     NONE
  97. #define BUS_TYPE_VME     1
  98. #define BUS_TYPE_MULTIBUS   2
  99. #define BUS_TYPE_PCI     3
  100. #define VME_BUS     BUS_TYPE_VME /* for backward compat. */
  101. #define MULTI_BUS     BUS_TYPE_MULTIBUS
  102. /* network configuration parameters */
  103. #define INET /* include internet protocols */
  104. #undef  BSD             /* remove any previous definition */
  105. #define BSD 44 /* BSD 4.4 like OS */
  106. #define BSDDEBUG /* turn on debug */
  107. #define GATEWAY /* tables to be initialized for gateway routing */
  108. /* common macros */
  109. #define MSB(x) (((x) >> 8) & 0xff)   /* most signif byte of 2-byte integer */
  110. #define LSB(x) ((x) & 0xff)   /* least signif byte of 2-byte integer*/
  111. #define MSW(x) (((x) >> 16) & 0xffff) /* most signif word of 2-word integer */
  112. #define LSW(x) ((x) & 0xffff)    /* least signif byte of 2-word integer*/
  113. /* swap the MSW with the LSW of a 32 bit integer */
  114. #define WORDSWAP(x) (MSW(x) | (LSW(x) << 16))
  115. #define LLSB(x) ((x) & 0xff) /* 32bit word byte/word swap macros */
  116. #define LNLSB(x) (((x) >> 8) & 0xff)
  117. #define LNMSB(x) (((x) >> 16) & 0xff)
  118. #define LMSB(x)  (((x) >> 24) & 0xff)
  119. #define LONGSWAP(x) ((LLSB(x) << 24) | 
  120.      (LNLSB(x) << 16)| 
  121.      (LNMSB(x) << 8) | 
  122.      (LMSB(x)))
  123. #define OFFSET(structure, member) /* byte offset of member in structure*/
  124. ((int) &(((structure *) 0) -> member))
  125. #define MEMBER_SIZE(structure, member) /* size of a member of a structure */
  126. (sizeof (((structure *) 0) -> member))
  127. #define NELEMENTS(array) /* number of elements in an array */ 
  128. (sizeof (array) / sizeof ((array) [0]))
  129. #define FOREVER for (;;)
  130. #define max(x, y) (((x) < (y)) ? (y) : (x))
  131. #define min(x, y) (((x) < (y)) ? (x) : (y))
  132. #define isascii(c) ((unsigned) (c) <= 0177)
  133. #define toascii(c) ((c) & 0177)
  134. /* storage class specifier definitions */
  135. #define FAST register
  136. #define IMPORT extern
  137. #define LOCAL static
  138. #include "types/vxCpu.h" /* must come before vxArch.h include */
  139. #include "types/vxArch.h" /* must come before include of types */
  140. #ifndef _ASMLANGUAGE
  141. #include "types/vxParams.h" /* must come before include of types */
  142. #include "types/vxTypesBase.h" /* must come between vxArch/vxTypes */
  143. #include "types/vxTypes.h"
  144. #include "types/vxTypesOld.h"
  145. #endif /* _ASMLANGUAGE */
  146. #define ROUND_UP(x, align) (((int) (x) + (align - 1)) & ~(align - 1))
  147. #define ROUND_DOWN(x, align) ((int)(x) & ~(align - 1))
  148. #define ALIGNED(x, align) (((int)(x) & (align - 1)) == 0)
  149. #define MEM_ROUND_UP(x) ROUND_UP(x, _ALLOC_ALIGN_SIZE)
  150. #define MEM_ROUND_DOWN(x) ROUND_DOWN(x, _ALLOC_ALIGN_SIZE)
  151. #define STACK_ROUND_UP(x) ROUND_UP(x, _STACK_ALIGN_SIZE)
  152. #define STACK_ROUND_DOWN(x) ROUND_DOWN(x, _STACK_ALIGN_SIZE)
  153. #define MEM_ALIGNED(x) ALIGNED(x, _ALLOC_ALIGN_SIZE)
  154. /*
  155.  * In case TOOL_FAMILY isn't defined, we shal assume gnu for
  156.  * backward compatibility.  All this is so we can include
  157.  * the toolMacros.h file from the h/tool/$(TOOL_FAMILY) directory
  158.  * path.  This is needed because for host tool building we can't
  159.  * always specify additional include paths for compiler tool
  160.  * builds.
  161.  */
  162. #ifndef TOOL_FAMILY
  163. #   define TOOL_FAMILY gnu
  164. #endif
  165. /* All this to generate a string we can #include */
  166. #define TOOL_HDR_STRINGIFY(x)  #x
  167. #define TOOL_HDR(tc, file) TOOL_HDR_STRINGIFY(tool/tc/file)
  168. #define TOOL_HEADER(file) TOOL_HDR(TOOL_FAMILY,file)
  169. /* Now include the correct header file */
  170. #include TOOL_HEADER(toolMacros.h)
  171. #define _WRS_VXWORKS_5_X
  172. /*
  173.  * Before we insist on defining __P here make sure there
  174.  * aren't any previous occurrences! __P may clash with
  175.  * the compiler's definition of it.
  176.  */
  177. #ifndef __P
  178. #if defined(__STDC__) || defined(__cplusplus)
  179. #define __P(protos) protos /* Use ANSI C proto */
  180. #else
  181. #define __P(protos)     ()
  182. #endif
  183. #endif
  184. #ifdef __cplusplus
  185. }
  186. #endif
  187. #endif /* __INCvxWorksh */