/* * @file mprOs.h * @brief Include O/S headers and smooth out per-O/S differences * @copy default * * Copyright (c) Mbedthis Software LLC, 2003-2006. All Rights Reserved. * * This software is distributed under commercial and open source licenses. * You may use the GPL open source license described below or you may acquire * a commercial license from Mbedthis Software. You agree to be fully bound * by the terms of either license. Consult the LICENSE.TXT distributed with * this software for full details. * * This software is open source; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. See the GNU General Public License for more * details at: http://www.mbedthis.com/downloads/gplLicense.html * * This program is distributed WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * This GPL license does NOT permit incorporating this software into * proprietary programs. If you are unable to comply with the GPL, you must * acquire a commercial license to use this software. Commercial licenses * for this software and support services are available from Mbedthis * Software at http://www.mbedthis.com * * @end */ /******************************* Documentation ********************************/ /* * This header is part of the Mbedthis Portable Runtime and aims to include * all necessary O/S headers and to unify the constants and declarations * required by Mbedthis products. It can be included by C or C++ programs. */ /******************************************************************************/ #ifndef _h_MPR_OS_HDRS #define _h_MPR_OS_HDRS 1 #include "buildConfig.h" /********************************* CPU Families *******************************/ /* * Porters, add your CPU families here and update configure code. */ #define MPR_CPU_UNKNOWN 0 #define MPR_CPU_IX86 1 #define MPR_CPU_PPC 2 #define MPR_CPU_SPARC 3 #define MPR_CPU_XSCALE 4 #define MPR_CPU_ARM 5 #define MPR_CPU_MIPS 6 #define MPR_CPU_68K 7 #define MPR_CPU_SIMNT 8 /* VxWorks NT simulator */ #define MPR_CPU_SIMSPARC 9 /* VxWorks sparc simulator */ /********************************* O/S Includes *******************************/ #if LINUX || SOLARIS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if LINUX #include #endif #if SOLARIS #include #endif #if BLD_FEATURE_FLOATING_POINT #define __USE_ISOC99 1 #include #include #endif #endif /* LINUX || SOLARIS */ #if VXWORKS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if BLD_FEATURE_FLOATING_POINT #include #define __USE_ISOC99 1 #include #endif #include #include #include #include #include #include #include #include #endif /* VXWORKS */ #if MACOSX #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif /* MACOSX */ #if WIN /* * We replace insecure functions with Mbedthis replacements */ #define _CRT_SECURE_NO_DEPRECATE 1 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define WIN32_LEAN_AND_MEAN #include #include #include #if BLD_FEATURE_FLOATING_POINT #include #endif #include #include #include #if BLD_DEBUG #include #endif #include "mprUnix.h" #endif /* WIN */ #if BREW #if BLD_FEATURE_FLOATING_POINT #warning "Floating point is not supported on Brew" #endif #if BLD_FEATURE_MULTITHREAD #warning "Multithreading is not supported on Brew" #endif #include "AEEModGen.h" #include "AEEAppGen.h" #include "BREWVersion.h" #if BREW_MAJ_VER == 2 /* * Fix for BREW 2.X */ #ifdef __GNUC__ #define __inline extern __inline__ #endif #include "AEENet.h" #undef __inline #endif #include "AEE.h" #include "AEEBitmap.h" #include "AEEDisp.h" #include "AEEFile.h" #include "AEEHeap.h" #include "AEEImageCtl.h" #include "AEEMedia.h" #include "AEEMediaUtil.h" #include "AEEMimeTypes.h" #include "AEEStdLib.h" #include "AEEShell.h" #include "AEESoundPlayer.h" #include "AEEText.h" #include "AEETransform.h" #include "AEEWeb.h" #if BREW_MAJ_VER >= 3 #include "AEESMS.h" #endif #include "AEETAPI.h" #if 0 #include "AEESound.h" #include "AEEDb.h" #include "AEEMenu.h" #endif #endif /* BREW */ /******************************************************************************/ /******************************* General Defines ******************************/ /******************************************************************************/ #ifndef MAXINT #if INT_MAX #define MAXINT INT_MAX #else #define MAXINT 0x7fffffff #endif #endif #ifndef BITSPERBYTE #define BITSPERBYTE (8 * sizeof(char)) #endif #define BITS(type) (BITSPERBYTE * (int) sizeof(type)) #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif #define MPR_ARRAY_SIZE(type) (sizeof(type) / sizeof(type[0])) #ifndef PRINTF_ATTRIBUTE #if (__GNUC__ >= 3) && !DOXYGEN && BLD_FEATURE_ALLOC_LEAK_TRACK /** Use gcc attribute to check printf fns. a1 is the 1-based index of * the parameter containing the format, and a2 the index of the first * argument. Note that some gcc 2.x versions don't handle this * properly **/ #define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2))) #else #define PRINTF_ATTRIBUTE(a1, a2) #endif #endif typedef char *MprStr; /* Used for dynamic strings */ #ifdef __cplusplus extern "C" { #else typedef int bool; #endif /******************************************************************************/ /******************************** Linux Defines *******************************/ /******************************************************************************/ #if LINUX typedef unsigned char uchar; #if BLD_FEATURE_INT64 __extension__ typedef long long int int64; __extension__ typedef unsigned long long int uint64; #define INT64(x) (x##LL) #define UINT64(x) (x##ULL) #endif #define closesocket(x) close(x) #define MPR_BINARY "" #define MPR_TEXT "" #define O_BINARY 0 #define O_TEXT 0 #define SOCKET_ERROR -1 #define MPR_DLL_EXT ".so" #if BLD_FEATURE_FLOATING_POINT #define MAX_FLOAT MAXFLOAT #endif /* * For some reason it is removed from fedora pthreads.h and only * comes in for UNIX96 */ extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict __attr, int *__restrict __kind) __THROW; /* Set the mutex kind attribute in *ATTR to KIND (either PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_ERRORCHECK, or PTHREAD_MUTEX_DEFAULT). */ extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) __THROW; #endif /* LINUX */ /******************************************************************************/ /******************************* VxWorks Defines ******************************/ /******************************************************************************/ #if VXWORKS typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; #define HAVE_SOCKLEN_T typedef int socklen_t; #if BLD_FEATURE_INT64 typedef long long int int64; typedef unsigned long long int uint64; #define INT64(x) (x##LL) #define UINT64(x) (x##ULL) #endif #define closesocket(x) close(x) #define getpid() taskIdSelf() #define MPR_BINARY "" #define MPR_TEXT "" #define O_BINARY 0 #define O_TEXT 0 #define SOCKET_ERROR -1 #define MPR_DLL_EXT ".so" #if BLD_FEATURE_FLOATING_POINT #define MAX_FLOAT FLT_MAX #endif #undef R_OK #define R_OK 4 #undef W_OK #define W_OK 2 #undef X_OK #define X_OK 1 #undef F_OK #define F_OK 0 #define MSG_NOSIGNAL 0 extern int access(char *path, int mode); extern int sysClkRateGet(); #endif /* VXWORKS */ /******************************************************************************/ /******************************** MacOsx Defines ******************************/ /******************************************************************************/ #if MACOSX typedef unsigned long ulong; typedef unsigned char uchar; #if BLD_FEATURE_INT64 __extension__ typedef long long int int64; __extension__ typedef unsigned long long int uint64; #define INT64(x) (x##LL) #define UINT64(x) (x##ULL) #endif #define closesocket(x) close(x) #define MPR_BINARY "" #define MPR_TEXT "" #define O_BINARY 0 #define O_TEXT 0 #define SOCKET_ERROR -1 #define MPR_DLL_EXT ".dylib" #define MSG_NOSIGNAL 0 #define __WALL 0x40000000 #define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE #if BLD_FEATURE_FLOATING_POINT #define MAX_FLOAT MAXFLOAT #endif #endif /* MACOSX */ /******************************************************************************/ /******************************* Windows Defines ******************************/ /******************************************************************************/ #if WIN typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned short ushort; /* * We always define INT64 types on windows */ #if BLD_FEATURE_INT64 || 1 typedef __int64 int64; typedef unsigned __int64 uint64; #define INT64(x) (x##i64) #define UINT64(x) (x##Ui64) #endif typedef int uid_t; typedef void *handle; typedef char *caddr_t; typedef long pid_t; typedef int gid_t; typedef ushort mode_t; typedef void *siginfo_t; #define HAVE_SOCKLEN_T typedef int socklen_t; #undef R_OK #define R_OK 4 #undef W_OK #define W_OK 2 /* * On windows map X_OK to R_OK */ #undef X_OK #define X_OK 4 #undef F_OK #define F_OK 0 #ifndef EADDRINUSE #define EADDRINUSE 46 #endif #ifndef EWOULDBLOCK #define EWOULDBLOCK EAGAIN #endif #ifndef ENETDOWN #define ENETDOWN 43 #endif #ifndef ECONNRESET #define ECONNRESET 44 #endif #ifndef ECONNREFUSED #define ECONNREFUSED 45 #endif #define MSG_NOSIGNAL 0 #define MPR_BINARY "b" #define MPR_TEXT "t" #if BLD_FEATURE_FLOATING_POINT #define MAX_FLOAT DBL_MAX #endif #ifndef FILE_FLAG_FIRST_PIPE_INSTANCE #define FILE_FLAG_FIRST_PIPE_INSTANCE 0x00080000 #endif #define MPR_DLL_EXT ".dll" #endif /* WIN */ /******************************************************************************/ /****************************** Solaris Defines *******************************/ /******************************************************************************/ #if SOLARIS typedef unsigned char uchar; #if BLD_FEATURE_INT64 typedef long long int int64; typedef unsigned long long int uint64; #define INT64(x) (x##LL) #define UINT64(x) (x##ULL) #endif #define closesocket(x) close(x) #define MPR_BINARY "" #define MPR_TEXT "" #define O_BINARY 0 #define O_TEXT 0 #define SOCKET_ERROR -1 #define MPR_DLL_EXT ".so" #define MSG_NOSIGNAL 0 #define INADDR_NONE ((in_addr_t) 0xffffffff) #define __WALL 0 #define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE #if BLD_FEATURE_FLOATING_POINT #define MAX_FLOAT MAXFLOAT #endif #endif /* SOLARIS */ /******************************************************************************/ /********************************* BREW Defines *******************************/ /******************************************************************************/ #if BREW typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned short ushort; typedef uint off_t; typedef long pid_t; #if UNUSED typedef int uid_t; typedef void *handle; typedef char *caddr_t; typedef int gid_t; typedef ushort mode_t; typedef void *siginfo_t; #define HAVE_SOCKLEN_T typedef int socklen_t; #ifndef EADDRINUSE #define EADDRINUSE 46 #endif #ifndef EWOULDBLOCK #define EWOULDBLOCK EAGAIN #endif #ifndef ENETDOWN #define ENETDOWN 43 #endif #ifndef ECONNRESET #define ECONNRESET 44 #endif #ifndef ECONNREFUSED #define ECONNREFUSED 45 #endif #define MSG_NOSIGNAL 0 #define MPR_BINARY "b" #define MPR_TEXT "t" #define MPR_DLL_EXT ".dll" #endif #define O_RDONLY 0 #define O_WRONLY 1 #define O_RDWR 2 #define O_CREAT 0x200 #define O_TRUNC 0x400 #define O_BINARY 0 #define O_TEXT 0x20000 #define O_EXCL 0x40000 #define O_APPEND 0x80000 #define R_OK 4 #define W_OK 2 #define X_OK 1 #define F_OK 0 #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #if UNUSED struct stat { uint st_size; }; #endif extern int getpid(); extern int isalnum(int c); extern int isalpha(int c); extern int isdigit(int c); extern int islower(int c); extern int isupper(int c); extern int isspace(int c); extern int isxdigit(int c); extern uint strlen(const char *str); extern char *strstr(const char *string, const char *strSet); extern void *memset(const void *dest, int c, uint count); extern void exit(int status); extern char *strpbrk(const char *str, const char *set); extern uint strspn(const char *str, const char *set); extern int tolower(int c); extern int toupper(int c); extern void *memcpy(void *dest, const void *src, uint count); extern void *memmove(void *dest, const void *src, uint count); extern int atoi(const char *str); extern void free(void *ptr); extern void *malloc(uint size); extern void *realloc(void *ptr, uint size); extern char *strcat(char *dest, const char *src); extern char *strchr(const char *str, int c); extern int strcmp(const char *s1, const char *s2); extern int strncmp(const char *s1, const char *s2, uint count); extern char *strcpy(char *dest, const char *src); extern char *strncpy(char *dest, const char *src, uint count); extern char *strrchr(const char *str, int c); #undef printf #define printf DBGPRINTF #if BREW_SIMULATOR && BLD_DEBUG extern _CRTIMP int __cdecl _CrtCheckMemory(void); extern _CRTIMP int __cdecl _CrtSetReportHook(); #endif #endif /* BREW */ /******************************************************************************/ #ifdef __cplusplus } #endif #endif /* _h_MPR_OS_HDRS */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim:tw=78 * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */