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

VxWorks

开发平台:

C/C++

  1. /* vxTypesOld.h - old VxWorks type definition header */
  2. /* Copyright 1984-2000 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02h,05dec01,mem  Added INT64 and UINT64.
  7. 02g,27nov01,sbs  changed FD_SETSIZE from 256 to 2048 (SPR #9377)
  8. 02f,22oct01,dee  Merge from T2.1.0 ColdFire
  9. 02e,18apr01,mem  Updated Arm/Thumb detection.
  10. 02d,25feb00,frf  Add SH support for T2
  11. 02c,15aug97,cym  added simnt support.
  12. 02d,26mar97,cdp  added Thumb (ARM7TDMI_T) support.
  13. 02c,28nov96,cdp  added ARM support.
  14. 02b,28sep95,ms  removed "static __inline__" (SPR #4500)
  15. 02b,12jul95,ism  added simsolaris support
  16. 02a,19mar95,dvs  removed tron references.
  17. 01z,01sep94,ism  fixed comment as per SPR# 1512.
  18. 01y,02dec93,pme  added Am29K family support.
  19. 01x,12jun93,rrr  vxsim.
  20. 02a,26may94,yao  added PPC support.
  21. 01w,09jun93,hdn  added support for I80X86
  22. 01v,12feb93,srh  added C++ versions of FUNCPTR, et al.
  23. 01u,13nov92,dnw  added definition of VOID (SPR #1781)
  24. 01t,02oct92,srh  replaced conditional around volatile, const, and signed so
  25.                  they won't be elided when __STDC__ is defined.
  26.                  added __cplusplus to __STDC__ condition.
  27. 01s,22sep92,rrr  added support for c++
  28. 01r,08sep92,smb  made some additions for the MIPS.
  29. 01q,07sep92,smb  added __STDC__ and modes to maintain compatibility with 5.0
  30. 01p,07jul92,rrr  moved STACK_GROW and ENDIAN to vxArch.h
  31. 01o,03jul92,smb  changed name from vxTypes.h.
  32. 01n,26may92,rrr  the tree shuffle
  33. 01m,25nov91,llk  included sys/types.h.
  34. 01l,04oct91,rrr  passed through the ansification filter
  35.   -fixed #else and #endif
  36.   -removed TINY and UTINY
  37.   -changed VOID to void
  38.   -changed ASMLANGUAGE to _ASMLANGUAGE
  39.   -changed copyright notice
  40. 01k,01oct91,jpb  fixed MIPS conditional for undefined CPU_FAMILY.
  41. 01j,20sep91,wmd  conditionalized out defines for const, unsigned and volatile
  42.  for the MIPS architecture.
  43. 01i,02aug91,ajm  added support for MIPS_R3k.
  44. 01h,15may91,gae  added define for "signed" when not available for pre-ANSI.
  45. 01g,29apr91,hdn  added defines and macros for TRON architecture.
  46. 01f,28apr91,del  added defines of __volatile__ and __const__ if !_STDC_
  47.  && _GNUC__
  48. 01f,24mar91,del  added INSTR * define for I960.
  49. 01e,28jan91,kdl  added DBLFUNCPTR and FLTFUNCPTR.
  50. 01d,25oct90,dnw  changed void to void except when linting.
  51. 01c,05oct90,shl  added copyright notice.
  52.                  made #endif ANSI style.
  53. 01b,10aug90,dnw  added VOIDFUNCPTR
  54. 01a,29may90,del  written.
  55. */
  56. /*
  57. DESCRIPTION
  58. This header file contains a mixture of stuff.
  59. 1) the old style typedefs (ie. POSIX now says they must end with _t).
  60.    These will be phased out gradually.
  61. 2) a mechanism for getting rid of const warning which are produced by the
  62.    GNU C compiler. Hopefully, this will be removed in the future.
  63. 3) macros that are so longer needed for vxWorks source code but maybe needed
  64.    by some customer applications and are therefore provided for backward
  65.    compatability.
  66. 4) system III typedefs (used by netinet) which do not fit in anywhere else.
  67. */
  68. #ifndef __INCvxTypesOldh
  69. #define __INCvxTypesOldh
  70. #ifdef __cplusplus
  71. extern "C" {
  72. #endif
  73. #include "sys/types.h"
  74. /* vxWorks types */
  75. typedef char INT8;
  76. typedef short INT16;
  77. typedef int INT32;
  78. typedef long long INT64;
  79. typedef unsigned char UINT8;
  80. typedef unsigned short UINT16;
  81. typedef unsigned int UINT32;
  82. typedef unsigned long long UINT64;
  83. typedef unsigned char UCHAR;
  84. typedef unsigned short USHORT;
  85. typedef unsigned int UINT;
  86. typedef unsigned long ULONG;
  87. typedef int BOOL;
  88. typedef int STATUS;
  89. typedef int  ARGINT;
  90. typedef void VOID;
  91. #ifdef __cplusplus
  92. typedef int  (*FUNCPTR) (...);     /* ptr to function returning int */
  93. typedef void  (*VOIDFUNCPTR) (...); /* ptr to function returning void */
  94. typedef double  (*DBLFUNCPTR) (...);  /* ptr to function returning double*/
  95. typedef float  (*FLTFUNCPTR) (...);  /* ptr to function returning float */
  96. #else
  97. typedef int  (*FUNCPTR) ();    /* ptr to function returning int */
  98. typedef void  (*VOIDFUNCPTR) (); /* ptr to function returning void */
  99. typedef double  (*DBLFUNCPTR) ();  /* ptr to function returning double*/
  100. typedef float  (*FLTFUNCPTR) ();  /* ptr to function returning float */
  101. #endif /* _cplusplus */
  102. /* This structure and the following definitions are needed to get rid
  103.    of const warning produced by the GNU C compiler.
  104.  */
  105. #if defined(__STDC__) || defined(__cplusplus)
  106. typedef union
  107.     {
  108.     long pm_int;
  109.     void *pm_v;
  110.     const void *pm_cv;
  111.     char *pm_c;
  112.     unsigned char *pm_uc;
  113.     signed char *pm_sc;
  114.     const char *pm_cc;
  115.     const unsigned char *pm_cuc;
  116.     const signed char *pm_csc;
  117.     short *pm_s;
  118.     ushort_t *pm_us;
  119.     const short *pm_cs;
  120.     const ushort_t *pm_cus;
  121.     int *pm_i;
  122.     uint_t *pm_ui;
  123.     const int *pm_ci;
  124.     const uint_t *pm_cui;
  125.     long *pm_l;
  126.     ulong_t *pm_ul;
  127.     const long *pm_cl;
  128.     const ulong_t *pm_cul;
  129.     int8_t *pm_i8;
  130.     uint8_t *pm_ui8;
  131.     const int8_t *pm_ci8;
  132.     const uint8_t *pm_cui8;
  133.     int16_t *pm_i16;
  134.     uint16_t *pm_ui16;
  135.     const int16_t *pm_ci16;
  136.     const uint16_t *pm_cui16;
  137.     int32_t *pm_i32;
  138.     uint32_t *pm_ui32;
  139.     const int32_t *pm_ci32;
  140.     const uint32_t *pm_cui32;
  141. #if _ARCH_MOVE_SIZE > 4
  142.     int64_t *pm_i64;
  143.     const int64_t *pm_ci64;
  144. #if _ARCH_MOVE_SIZE > 8
  145.     int128_t *pm_i128;
  146.     const int128_t *pm_ci128;
  147. #endif
  148. #endif
  149.     } pointer_mix_t;
  150. #define CHAR_FROM_CONST(x) (char *)(x)
  151. #define VOID_FROM_CONST(x) (void *)(x)
  152. #endif /* __STDC__ */
  153. #define STACK_DIR _ARCH_STACK_DIR
  154. #define ALIGN_MEMORY _ARCH_ALIGN_MEMORY
  155. #define ALIGN_STACK _ARCH_ALIGN_STACK
  156. #define ALIGN_REGS _ARCH_ALIGN_REGS
  157. #define NBBY 8 /* number of bits in a byte */
  158. /* modes - must match O_RDONLY/O_WRONLY/O_RDWR in ioLib.h! */
  159. #define READ            0
  160. #define WRITE           1
  161. #define UPDATE          2
  162. /* Select uses bit masks of file descriptors in longs.
  163.  * These macros manipulate such bit fields (the filesystem macros use chars).
  164.  * FD_SETSIZE may be defined by the user, but the default here
  165.  * should be >= maxFiles parameter in iosInit call found in usrConfig.c.
  166.  * If this define is changed, recompile the source, or else select() will
  167.  * not work.(The user can set the number lower, but not higher).
  168.  *
  169.  * Changing the default to 2048 adds 224 bytes to the size of the fd_set
  170.  * structure.
  171.  */
  172. #ifndef FD_SETSIZE
  173. #define FD_SETSIZE 2048
  174. #endif /* FD_SETSIZE */
  175. typedef long fd_mask;
  176. #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
  177. #ifndef howmany
  178. #define howmany(x, y) ((unsigned int)(((x)+((y)-1)))/(unsigned int)(y))
  179. #endif /* howmany */
  180. typedef struct fd_set
  181.     {
  182.     fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  183.     } fd_set;
  184. #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
  185. #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
  186. #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
  187. #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p)))
  188. /* system III  typedefs (used by netinet) */
  189. typedef unsigned char u_char;
  190. typedef unsigned short u_short;
  191. typedef unsigned int u_int;
  192. typedef unsigned long u_long;
  193. typedef unsigned short ushort;
  194. /* historical definitions - now obsolete */
  195. typedef char TBOOL; /* obsolete */
  196. /* architecture dependent typedefs */
  197. #ifdef CPU_FAMILY
  198. #if CPU_FAMILY==MC680X0 || CPU_FAMILY==SH
  199. typedef unsigned short INSTR; /* word-aligned instructions */
  200. #endif /* CPU_FAMILY==MC680X0 || CPU_FAMILY==SH */
  201. #if CPU_FAMILY==SPARC || CPU_FAMILY==MIPS || CPU_FAMILY==SIMSPARCSUNOS || CPU_FAMILY==SIMHPPA || CPU_FAMILY==SIMSPARCSOLARIS
  202. typedef unsigned long INSTR; /* 32 bit word-aligned instructions */
  203. #endif /* CPU_FAMILY==SPARC || CPU_FAMILY==MIPS || CPU_FAMILY==SIMSPARCSUNOS || CPU_FAMILY==SIMHPPA || CPU_FAMILY==SIMSPARCSOLARIS */
  204. #if CPU_FAMILY==I960
  205. typedef unsigned long INSTR; /* 32 bit word-aligned instructions */
  206. #endif /* CPU_FAMILY==I960 */
  207. #if CPU_FAMILY==I80X86 || CPU_FAMILY==SIMNT
  208. typedef unsigned char INSTR; /* char instructions */
  209. #endif /* CPU_FAMILY==I80X86 || CPU_FAMILY==SIMNT */
  210. #if CPU_FAMILY==AM29XXX
  211. typedef unsigned long INSTR; /* 32 bit word-aligned instructions */
  212. #endif /* CPU_FAMILY==AM29XXX */
  213. #if     (CPU_FAMILY==PPC)
  214. typedef unsigned long INSTR;            /* 32 bit word-aligned instructions */
  215. #endif  /* (CPU_FAMILY==PPC) */
  216. #if     (CPU_FAMILY==ARM)
  217. #if (ARM_THUMB)
  218. typedef unsigned short INSTR;           /* 16 bit instructions */
  219. #else
  220. typedef unsigned long INSTR;            /* 32 bit word-aligned instructions */
  221. #endif
  222. #endif  /* CPU_FAMILY==ARM */
  223. #if CPU_FAMILY==COLDFIRE 
  224. typedef unsigned short INSTR; /* word-aligned instructions */
  225. #endif /* CPU_FAMILY==COLDFIRE */
  226. #endif  /* CPU_FAMILY */
  227. /* ANSI type qualifiers */
  228. #if !defined(__STDC__) && !defined(__cplusplus)
  229. #ifdef  __GNUC__
  230. #define volatile __volatile__
  231. #define const __const__
  232. #define signed __signed__
  233. #else
  234. #if     !(defined(CPU_FAMILY) && CPU_FAMILY==MIPS)
  235. #define volatile
  236. #define const
  237. #define signed
  238. #endif /* !(defined(CPU_FAMILY) && CPU_FAMILY==MIPS) */
  239. #endif /* __GNUC__ */
  240. #endif /* !defined(__STDC__) && !defined(__cplusplus) */
  241. #if     CPU_FAMILY==MIPS
  242. #define CHAR_FROM_CONST(x) (char *)(x)
  243. #define VOID_FROM_CONST(x) (void *)(x)
  244. #endif
  245. #ifdef __cplusplus
  246. }
  247. #endif
  248. #endif /* __INCvxTypesOldh */