platform.h
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:8k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.13 $
  3.  * $Date: 1998/05/21 19:23:20 $
  4.  */
  5. ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996,97 Lucent Technologies    //
  7. //                       All Rights Reserved                  //
  8. //                                                            //
  9. //                       THIS IS UNPUBLISHED                  //
  10. //                       PROPRIETARY SOURCE                   //
  11. //                   CODE OF Lucent Technologies              //
  12. // AND elemedia   //
  13. //                                                            //
  14. //           The copyright notice above does not evidence any //
  15. //          actual or intended publication of such source code//
  16. ////////////////////////////////////////////////////////////////
  17. //
  18. ////////////////////////////////////////////////////////////////
  19. // File : platform.h   //
  20. //   //
  21. //  History:   //
  22. //  13_Nov_1996 Created   //
  23. // 28_May_1997 Changes for posix.      //
  24. //  30_Jun_1997 Moved platform specific stuff from cw/types.h //
  25. // 09_Jul_1997 Changed check for sys/endian.h    //
  26. // 09_Jul_1997 Check for UW and inclusion of sys/byteorder.h //
  27. // check for __USLC__for changes   //
  28. // 16_Jul_1997 Misaligned access macros..   //
  29. // 21_Aug_1997 VXworks port   //
  30. // 26_Aug_1997 Removed typedef for wchar_t under WIN32   //
  31. // 02_Oct_1997 Added process.h for win32 platform.   //
  32. // 01_Dec_1997 Include poll.h if required.   //
  33. // 30_Jan_1998 Include winsock2.h if required.   //
  34. //  23_Mar_1998 Changes for hpux                              //
  35. // 21_May_1998 Check for NTOHL and NTOHS before attempting   //
  36. // to define them. The latest version(??) of   //
  37. // VxWorks header files seems to define them.   //
  38. //   //
  39. ////////////////////////////////////////////////////////////////
  40. #if !defined(__PLATFORM_H__)
  41. #define __PLATFORM_H__
  42. #if (defined(__USLC__) && defined(unix)) // unixware 2.x
  43. #define __SVR4
  44. #define __UNIX_THREADS__
  45. #endif
  46. #if (defined(WIN32))
  47. #if defined(USE_WINSOCK2)
  48. #include <winsock2.h>
  49. #else
  50. #include <winsock.h>
  51. #endif
  52. #include <windows.h>
  53. #include <process.h>
  54. #elif (defined(VXWORKS))
  55. #include "vxWorks.h"
  56. #include "fcntl.h"
  57. #include "time.h"
  58. #include "string.h"
  59. #include "ctype.h"
  60. #include "ioLib.h"
  61. #include "taskLib.h"
  62. #include "semLib.h"
  63. #include "selectLib.h"
  64. #include "sockLib.h"
  65. #include "inetLib.h"
  66. #elif (defined(__SVR4))
  67. #include <unistd.h>
  68. #if (defined(_POSIX_THREADS))
  69. #include <pthread.h>
  70. #elif (defined(__UNIX_THREADS__))
  71. #include <thread.h>
  72. #include <synch.h>
  73. #endif
  74. #if defined(USE_POLL)
  75. #include <stropts.h>
  76. #include <poll.h>
  77. #endif
  78. #if (defined(__USLC__))
  79. #if (defined(DEBUG))
  80. #undef DEBUG // comes from ossasn1 headers,clash :netinet/in_systm_f.h
  81. #endif
  82. #endif
  83. #include <sys/types.h>
  84. #include <sys/ioctl.h>
  85. #include <sys/filio.h>
  86. #include <stdlib.h>
  87. #include <string.h>
  88. #include <errno.h>
  89. #include <sys/socket.h>
  90. #include <sys/select.h>
  91. #include <arpa/inet.h>
  92. #include <netinet/in.h>
  93. #include <netinet/in_systm.h>
  94. #include <netinet/ip.h>
  95. #include <netinet/tcp.h>
  96. #elif (defined(__hpux))
  97. #include <unistd.h>
  98. /* Always use POSIX_THREADS.  The #define is inside the .h */
  99. #include <pthread.h>
  100. #if defined(USE_POLL)
  101. #include <stropts.h>
  102. #include <poll.h>
  103. #endif
  104. #include <sys/types.h>
  105. #include <sys/ioctl.h>
  106. #include <stdlib.h>
  107. #include <string.h>
  108. #include <errno.h>
  109. #include <sys/socket.h>
  110. #include <arpa/inet.h>
  111. #include <netinet/in.h>
  112. #include <netinet/in_systm.h>
  113. #include <netinet/ip.h>
  114. #include <netinet/tcp.h>
  115. #else
  116. #error unknown OS
  117. #endif
  118. #if defined(IRIX) // Check if sys/endian.h exists.
  119. #include <sys/endian.h>
  120. #elif defined(__USLC__) // UW has byteorder.h
  121. #include <sys/byteorder.h>
  122. #elif defined(VXWORKS)
  123. #define LITTE_ENDIAN 0x1234
  124. #define BIG_ENDIAN 0x4321
  125. #define PDP_ENDIAN 0x3412
  126. #if (CPU == SIMSPARCSOLARIS)
  127. #define BYTE_ORDER BIG_ENDIAN
  128. #elif (CPU == SPARC)
  129. #define BYTE_ORDER BIG_ENDIAN
  130. #elif (CPU == R4000)
  131. #if (CPU_VAR == R4700)
  132. #ifdef MIPSEB
  133. #define BYTE_ORDER BIG_ENDIAN
  134. #else
  135. #define BYTE_ORDER LITTLE_ENDIAN
  136. #endif
  137. #else
  138. #error Unknown MIPS CPU Variant
  139. #endif /* CPU_VAR == ?? */
  140. #elif (CPU == MC68040)
  141. #define BYTE_ORDER BIG_ENDIAN
  142. #elif (CPU == I80386)
  143. #define BYTE_ORDER LITTLE_ENDIAN
  144. #else
  145. #error "Unknown CPU type..."
  146. #endif
  147. #else
  148. #define LITTE_ENDIAN 0x1234
  149. #define BIG_ENDIAN 0x4321
  150. #define PDP_ENDIAN 0x3412
  151. #if defined(sparc)
  152. #define BYTE_ORDER BIG_ENDIAN
  153. #elif defined(__hpux)
  154. // There is no CPU variable for hpux.  All processors are big endian currently.
  155. #define BYTE_ORDER BIG_ENDIAN
  156. #else // BUGALERT!! every thing else is assumed little endian
  157. #define BYTE_ORDER LITTLE_ENDIAN
  158. #endif
  159. #endif // IRIX
  160. #if (BYTE_ORDER == LITTLE_ENDIAN)
  161. #if !defined(NTOHL)
  162. #define NTOHL(L)
  163. (((unsigned long)(L) << 24) | (((unsigned long)(L) & 0xff00) << 8) |
  164. (((unsigned long)(L) >> 8) & 0xff00) | ((unsigned long)(L) >> 24))
  165. #endif
  166. #if !defined(NTOHS)
  167. #define NTOHS(S)
  168. (unsigned short)(((unsigned short)(S) << 8) |
  169. ((unsigned short)(S) >> 8))
  170. #endif
  171. #elif (BYTE_ORDER == BIG_ENDIAN)
  172. #if !defined(NTOHL)
  173. #define NTOHL(L) (L)
  174. #endif
  175. #if !defined(NTOHS)
  176. #define NTOHS(S) (S)
  177. #endif
  178. #else // PDP
  179. #error "What!!, are you kidding..."
  180. #endif // BYTE_ORDER
  181. #if !defined(HTONS)
  182. #define HTONS(S) NTOHS(S)
  183. #endif
  184. #if !defined(HTONL)
  185. #define HTONL(L) NTOHL(L)
  186. #endif
  187. //
  188. // BEGIN.. OS Specific section.
  189. //
  190. //
  191. // WIN32 specific defines...
  192. //
  193. #if defined(WIN32)
  194. #define DLLEXPORT __declspec(dllexport)
  195. #define DLLIMPORT __declspec(dllimport)
  196. #define Boolean BOOL
  197. #define srand48 srand
  198. typedef WCHAR wchar_t;
  199. // Generate a random number between 0.0  and 1.0
  200. #define drand48() ((double)rand()/double(RAND_MAX))
  201. // Disable compilation warnings...
  202. #if (!defined(NO_WARNING_SUPPRESSION))
  203. // disable reporting of long variable names warnings..
  204. #pragma warning( disable : 4786) 
  205. //conversion type' conversion exists from 'type1' to 'type2', but is inaccessible
  206. //#pragma warning( disable : 4243) 
  207. // 'this' : used in base member initializer list
  208. #pragma warning( disable : 4355) 
  209. // deletion of pointer to incomplete type
  210. #pragma warning( disable : 4150) 
  211. #endif // NO_WARNING_SUPPRESSION
  212. #endif // WIN32
  213. //
  214. // SVR4 specific defines..
  215. //
  216. #if (defined(__SVR4))
  217. #define DLLEXPORT
  218. #define DLLIMPORT
  219. #define stricmp strcasecmp
  220. typedef int Boolean;        // matches rw - done this way to avoid
  221.                             // everyone compiling rw/string.h
  222. #if (defined(__sun))
  223. typedef int boolean;
  224. #endif
  225. #if (defined(__USLC__))
  226. extern "C" int strcasecmp(char *, char *); 
  227. #endif
  228. #if (defined(__USLC__)) // Unixware has its own enum
  229. #if defined(TRUE)
  230. #undef TRUE
  231. #endif
  232. #if defined(FALSE)
  233. #undef FALSE
  234. #endif
  235. #define TRUE  B_TRUE
  236. #define FALSE B_FALSE
  237. #else
  238. #if !defined(TRUE) || ((TRUE) != 1)
  239. #define TRUE (1)
  240. #endif
  241. #if !defined(FALSE) || ((FALSE) != 0)
  242. #define FALSE (0)
  243. #endif
  244. #endif // USLC
  245. #endif  // defined(__SVR4))
  246. //
  247. // __hpux specific defines..
  248. //
  249. #if (defined(__hpux))
  250. #define DLLEXPORT
  251. #define DLLIMPORT
  252. #define stricmp strcasecmp
  253. typedef int Boolean;        // matches rw - done this way to avoid
  254.                             // everyone compiling rw/string.h
  255. typedef int boolean;
  256. #if !defined(TRUE) || ((TRUE) != 1)
  257. #define TRUE (1)
  258. #endif
  259. #if !defined(FALSE) || ((FALSE) != 0)
  260. #define FALSE (0)
  261. #endif
  262. #endif  // defined(__hpux))
  263. #if (defined(VXWORKS))
  264. extern "C" int strcasecmp(char *, char *); 
  265. #define drand48() ((double)rand()/double(RAND_MAX))
  266. #define srand48 srand
  267. #if ((CPU == SIMSPARCSOLARIS))
  268. #else
  269. #define DLLEXPORT
  270. #define DLLIMPORT
  271. #define stricmp strcasecmp
  272. typedef int Boolean;        // matches rw - done this way to avoid
  273. typedef int boolean;
  274. #if !defined(TRUE) || ((TRUE) != 1)
  275. #define TRUE (1)
  276. #endif
  277. #if !defined(FALSE) || ((FALSE) != 0)
  278. #define FALSE (0)
  279. #endif
  280. #endif /* CPU == SIMSPARCSOLARIS */
  281. #endif /* VXWORKS */
  282. //
  283. // END.. OS Specific section.
  284. //
  285. //
  286. // BEGIN Architecture specific section
  287. //
  288. #if (defined(sparc) && defined (__SVR4)) // solaris2.x on sparc...
  289. #define ENABLE_MISALIGNED_ACCESS() asm ("ta 6")
  290. #endif
  291. #if (defined(VXWORKS)) // vxworks on various targets.
  292. #if ((CPU == SIMSPARCSOLARIS) || (CPU == SPARC))
  293. #define ENABLE_MISALIGNED_ACCESS() asm ("ta 6")
  294. #endif
  295. #endif
  296. //
  297. // END Architecture specific section
  298. //
  299. #endif