/************************************************************************/ /* SISCO SOFTWARE MODULE HEADER *****************************************/ /************************************************************************/ /* (c) Copyright Systems Integration Specialists Company, Inc., */ /* 1986 - 2008, All Rights Reserved. */ /* */ /* PROPRIETARY AND CONFIDENTIAL */ /* */ /* MODULE NAME : sysincs.h */ /* PRODUCT(S) : MMSEASE */ /* */ /* MODULE DESCRIPTION : */ /* The purpose of this include file is to bring in include files */ /* that come with one of the various C compilers. */ /* */ /* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */ /* */ /* MODIFICATION LOG : */ /* Date Who Rev Comments */ /* -------- --- ------ ------------------------------------------- */ /* 03/27/08 EJV 48 Defined S_MAX_PATH for all systems. */ /* 01/15/08 EJV 47 Added S_FMT_* helper macros for (s)printf. */ /* 11/01/07 EJV UNIX, Linux: added define MAX_PATH. */ /* 02/28/08 JRB 46 Add timeb.h for _WIN32, linux, QNX. */ /* 10/03/07 JRB 45 Add winsock2.h BEFORE windows.h */ /* Add #pragma for _WIN32. */ /* 11/08/06 EJV 44 HP-UX: use */ /* 07/10/06 EJV 43 Sun: chg inlude to . */ /* 06/19/06 EJV 42 VXWORKS, QNX: added . */ /* UNIX, Linux: added . */ /* 02/28/06 EJV 41 Added pragma to disable warning C4996 (about */ /* deprecated functions). */ /* 01/30/06 GLB 33 Integrated porting changes for VMS */ /* 02/13/06 DSF 39 Migrate to VS.NET 2005 */ /* 12/16/05 GLB 38 Added "unix.h" for "ftruncate" */ /* 11/21/05 DSF 37 Do not enforce definition of ASSERT */ /* 09/28/05 EJV 36 Moved filio.h for sun (from gensock2.c). */ /* 08/10/05 JRB 35 Fixed a few newline characters. */ /* 07/15/05 DSF 34 Fixed SASSERT warnings for release builds */ /* 05/24/05 EJV 33 UNIX, Linux: added include */ /* 03/18/05 DSF 32 Log asserts */ /* 12/07/04 JRB 31 Define larger FD_SETSIZE for QNX. */ /* 09/22/04 EJV 30 Added INADDR_NONE (needed on sun) */ /* 07/08/04 DSF 29 Fixed SASSERT macro */ /* 01/26/04 JRB 28 Fix LYNX includes. */ /* 01/22/04 DSF 27 Added/modified ASSERT macros */ /* 01/19/04 EJV 26 __hpux 10.20 does not have sys/select.h. */ /* 12/09/03 JRB 25 Add LYNX support. Add () to max,min macros. */ /* 10/23/03 JRB 24 Move socket includes to here. */ /* For _WIN32, add windows.h, process.h */ /* Del unused CDECL define. */ /* 04/28/03 DSF 23 Make sure expression inside VERIFY is always */ /* executed */ /* 04/15/03 DSF 22 Don't define/undef NDEBUG */ /* 03/18/03 JRB 21 Fix QNX #ifdef. */ /* 02/20/03 JRB 20 Del PSOS code. */ /* 02/17/03 CRM 19 Added "defined(linux)" code. */ /* 02/17/03 JRB 18 Stop using SYSTEM_SEL define. */ /* Add conio.h for WIN32. */ /* Add sys/time.h, sys/select.h for UNIX. */ /* Add termio.h for UNIX & QNX. */ /* 02/27/02 EJV 17 Added limits.h to most of systems. */ /* Check if LONG_MAX and INT_MAX defined. */ /* 07/27/01 DSF 16 crtdbg.h should only be included if _DEBUG */ /* is defined */ /* 03/16/01 DSF 15 Make sure VERIFY is not defined before */ /* defining it */ /* 02/02/01 DSF 14 Added asserts */ /* 01/19/01 EJV 13 Added for SYSTEM_SEL_SYS_5. */ /* 01/03/01 EJV 12 Added for SYSTEM_SEL_SYS_5. */ /* 10/13/00 EJV 11 Added for some SYSTEM_SEL_SYS_5. */ /* 05/05/00 JRB 10 Added "select.h" for some systems. */ /* 04/20/00 EJV 09 Added stdarg.h for SYSTEM_SEL_SYS_5. */ /* 02/04/99 JRB 08 Added types.h & stat.h for most systems. */ /* 07/01/98 JRB 07 Added stdarg.h & ctype.h for some systems. */ /* 12/29/97 JRB 06 Cleaned up OS2 (include os2.h). More PSOS. */ /* 12/11/97 JRB 05 Cleaned up PSOS includes. Use SYS_PSOS. */ /* 12/11/97 JRB 04 Deleted EMBEDDED_6800 includes. */ /* 10/29/97 EJV 03 Corrected max maro definition */ /* 10/28/97 EJV 02 Added *.h files specific for SYS_5 */ /* 08/15/97 EJV 01 Added *.h files specific for SYS_QNX4 */ /* 04/02/97 DTL 7.00 MMSEASE 7.0 release. See MODL70.DOC for */ /* history. */ /************************************************************************/ #ifndef SYSINCS_INCLUDED #define SYSINCS_INCLUDED #ifdef __cplusplus extern "C" { #endif #if defined(__OS2__) #define INCL_BASE /* include all OS2 definitions. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef kbhit /* The OS/2 2.0 version is not what we want */ #undef kbhit #endif #include /* for _beginthread, _endthread */ #include /* for "kill", etc. */ /* Sockets related includes */ #include #include /* IPPROTO_*, etc. */ #include /* gethostbyname, etc. */ #include /* defines FIONBIO */ #endif /* OS2 */ #if defined (_WIN32) #if !defined (_CRT_SECURE_NO_DEPRECATE) #define _CRT_SECURE_NO_DEPRECATE #endif #pragma warning(disable : 4996) #pragma warning(disable : 4786 4800) #if defined (_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES) #undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 #endif /* winsock2.h MUST ALWAYS BE BEFORE windows.h to override defs in */ /* winsock.h (included by windows.h). Any module that includes windows.h*/ /* before sysincs.h, must also include winsock2.h before windows.h. */ #include /* must be before windows.h */ #include #include /* for _beginthread, _endthread */ #include /* for ftime, timeb */ #endif /* defined(_WIN32) */ #if defined(_WIN32) || defined(MSDOS) || defined(__MSDOS__) #include #include #include #include #include #include #include #include #include #include #include #endif #if defined(VXWORKS) #include /*add hsj 2012-03-19*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* for "kill", etc. */ /* Sockets related includes */ #include #include #include #include #include #include #include /* IPPROTO_*, etc. */ #include /* inet_addr, etc. */ #include /* TCP_NODELAY, etc. */ #include #endif #if defined(__QNX__) /* FD_SETSIZE default is only 32 on QNX. Must define larger value */ /* here (before any system includes) to allow more TCP connections. */ #define FD_SETSIZE 600 #include #include #include #include #include #include #include #include /* S_IFIFO, S_IRUSR, S_IWUSR, etc. */ #include #include #include /* mknod, etc. */ #include /* added for "ftruncate" */ #include /* open, O_RDONLY, O_WRONLY, etc. */ #include /* execlp, etc. */ #include #include #include #include #include #include /* for "kill", etc. */ #include /* for ftime, timeb */ /* Sockets related includes */ #include #include /* gethostbyname, etc. */ #include /* IPPROTO_*, etc. */ #include /* inet_addr, etc. */ #include /* TCP_NODELAY, etc. */ #include #endif /* UNIX or "UNIX-like" systems */ #if defined(_AIX) || defined(sun) || defined(__hpux) || defined(linux) \ || (defined(__alpha) && !defined(__VMS)) || defined(__LYNX) #include /* SHOULD be before any other include files */ #include #include #include #include #if (!defined(__LYNX)) #include #include #endif #define max(a,b) (((a) > (b)) ? (a) : (b)) #define min(a,b) (((a) < (b)) ? (a) : (b)) #include #include #include #include #include #include /* open, O_RDONLY, O_WRONLY, etc. */ #include #include #if defined(linux) #include /* for ftime, timeb */ #include #include #endif #if defined(__hpux) #include #else #include #endif #if (!defined (__hpux)) && (!defined(__LYNX)) #include #endif #include /* for "kill", etc. */ #include #if defined(sun) #include #endif /* Sockets related includes */ #if defined(__LYNX) #include #else #include #endif #include /* gethostbyname, etc. */ #include /* IPPROTO_*, etc. */ #include /* for sockaddr_un */ /* Forward references are supplied to eliminate xlC_r compiler warnings */ struct ether_addr; /* forward reference */ struct sockaddr_dl; /* forward reference */ #include /* inet_addr, etc. */ #include /* TCP_NODELAY, etc. */ #ifndef INADDR_NONE #define INADDR_NONE ((in_addr_t) 0xffffffff) #endif #endif /* defined(_AIX) || defined(sun) || defined(__hpux) || defined(linux) ... */ #if defined(__VMS) #include #include #include #include #include #include #include /* VMS descriptor stuff */ #include /* I/O FUNCTION CODE DEFS */ #include /* LIB$ RTL-routine signatures. */ #include /* LIB$ RTL-routine signatures. */ #include /* LIB$ RTL-routine signatures. */ #include /* SS$_ sys ser return stati <8-) */ #include /* Sys ser calls */ #include /* ... */ #include /* Convert floating-point data type */ #include /* ... */ #include /* UNIX style Signal Value Definitions */ #include #include #include #include "stdarg.h" #include "iostream.h" #include #include #include #include /* TCP descriptions */ #include /* internet system Constants and structures. */ #include /* Network address info. */ #include /* Network database library info. */ #include /* TCP/IP socket definitions. */ #include #include /* Operations on socket (?) */ #define max(a,b) ((a > b) ? a : b) #define min(a,b) ((a < b) ? a : b) #endif /* POWERPC systems */ #if defined(_POWERPC) #include #include #include #include #include #include #include #include #include #include /* MSL库没有stat.h和dirent.h因此使用沈沉写的dirent_stat来替代 */ #include "dirent_stat.h" //#include //#include #define max(a,b) ((a > b) ? a : b) #define min(a,b) ((a < b) ? a : b) #undef far #define far #undef near #define near #endif //defined(_POWERPC) /* NUCLEUS + 许继自己的TCP协议栈和网络芯片驱动,它不是完整意义的操作系统,因此只能作为附加定义 */ #if defined(_NUCLEUS) #include "NUCLEUS.h" #if defined(_NPU808) #include "xj_cosc.h" #include "xjelec.h" #include "pgf_defs.h" #endif #include "DSP_TCPIP.h" #undef IPPROTO_TCP #define IPPROTO_TCP 0 #endif /* _NUCLEUS */ #if (!defined(INT_MAX)) || (!defined(LONG_MAX)) #error INT_MAX and LONG_MAX must be defined. Usually defined in limits.h #endif #if defined(MAX_PATH) #define S_MAX_PATH MAX_PATH #elif defined(PATH_MAX) /* POSIX should have it defined in limits.h */ #define S_MAX_PATH PATH_MAX #else #define S_MAX_PATH 1024 /* default */ #endif /*----------------------------------------------*/ /* printf, sprintf, sscanf helper macros */ /*----------------------------------------------*/ /* helper macro for 32-bit and 64-bit pointers support */ /* If pointer "0x%p" format is not supported then something like "0x%x",*/ /* "0x%lx", or "0x%llx" may be used, depending on the pointer size. */ #if defined(_WIN32) #define S_FMT_PTR "0x%p" #else /* all other systems (e.g. UNIX) */ #define S_FMT_PTR "0x%p" #endif /* all other systems (e.g. UNIX) */ /* helper macro for time_t */ #if defined(_WIN32) #if defined(_USE_32BIT_TIME_T) #define S_FMT_TIME_T "%d" #else #define S_FMT_TIME_T "%I64d" #endif #else /* all other systems (e.g. UNIX) */ #define S_FMT_TIME_T "%d" #endif /* all other systems (e.g. UNIX) */ #ifdef INT64_SUPPORT #ifdef _WIN32 #define S_FMT_INT64 "%I64d" #define S_FMT_UINT64 "%I64u" #elif defined(_AIX) || defined(__hpux) || defined(linux) || defined(sun) || defined(__LYNX) #define S_FMT_INT64 "%lld" #define S_FMT_UINT64 "%llu" #elif (defined(__alpha) && !defined(__VMS)) #define S_FMT_INT64 "%ld" #define S_FMT_UINT64 "%lu" #elif defined(_POWERPC) #define S_FMT_INT64 "%ld" #define S_FMT_UINT64 "%lu" #else /* all other systems */ #error Missing S_FMT_INT64 and S_FMT_UINT64 defines for this platform. #endif /* all other systems */ #endif /* INT64_SUPPORT */ /* helper macro for HANDLE */ #if defined(_WIN32) #if (_MSC_VER >= 1300) #define S_FMT_HANDLE "0x%p" #define S_FMT_THREAD_HANDLE "0x%p" #else #define S_FMT_HANDLE "%d" #define S_FMT_THREAD_HANDLE "%lu" #endif #else /* all other systems (e.g. UNIX) */ #define S_FMT_THREAD_HANDLE "0x%p" #endif /* all other systems (e.g. UNIX) */ /************************************************************************/ /************************************************************************/ /* Assert stuff */ /************************************************************************/ /************************************************************************/ #include #if defined (_WIN32) && defined (_DEBUG) #include #endif #if !defined (C_ASSERT) #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] #endif #if !defined (ASSERT) #define ASSERT _ASSERT #endif #if !defined (ASSERTE) #define ASSERTE _ASSERTE #endif #if !defined (_SASSERT) #define _SASSERT(e) \ { \ int assertResult = (e) ? 1 : 0; \ if (!assertResult) {SLOGALWAYS3("Assertion failed: '%s', file %s, line %d", #e, __FILE__, __LINE__);} \ assert (assertResult); \ } #endif #if !defined (_SASSERTE) #define _SASSERTE(e) \ { \ int assertResult = (e) ? 1 : 0; \ if (!assertResult) {SLOGALWAYS3("Assertion failed: '%s', file %s, line %d", #e, __FILE__, __LINE__);} \ assert (assertResult); \ } #endif #if !defined (SASSERT) #define SASSERT _SASSERT #endif #if !defined (SASSERTE) #define SASSERTE _SASSERTE #endif #if !defined (VERIFY) #if !defined (NDEBUG) #define VERIFY(e) _SASSERTE(e) #else #define VERIFY(e) ((void) (e)) #endif #endif #ifdef __cplusplus } #endif #endif