summaryrefslogtreecommitdiff
path: root/source4/web_server/ejs/mprOs.h
diff options
context:
space:
mode:
Diffstat (limited to 'source4/web_server/ejs/mprOs.h')
-rw-r--r--source4/web_server/ejs/mprOs.h627
1 files changed, 627 insertions, 0 deletions
diff --git a/source4/web_server/ejs/mprOs.h b/source4/web_server/ejs/mprOs.h
new file mode 100644
index 0000000000..5a88f4f8af
--- /dev/null
+++ b/source4/web_server/ejs/mprOs.h
@@ -0,0 +1,627 @@
+///
+/// @file mprOs.h
+/// @brief Include O/S headers and smooth out per-O/S differences
+// @copy default
+//
+// Copyright (c) Mbedthis Software LLC, 2003-2005. 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.
+///
+////////////////////////////////////////////////////////////////////////////////
+
+#error foo
+
+blah blah;
+
+#ifndef _h_MPR_OS_HDRS
+#define _h_MPR_OS_HDRS 1
+
+#include "web_server/ejs/config.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 <sys/types.h>
+ #include <time.h>
+ #include <arpa/inet.h>
+ #include <ctype.h>
+ #include <dlfcn.h>
+ #include <fcntl.h>
+ #include <grp.h>
+ #include <errno.h>
+ #include <libgen.h>
+ #include <limits.h>
+ #include <netdb.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <netinet/tcp.h>
+ #include <netinet/ip.h>
+ #include <pthread.h>
+ #include <pwd.h>
+ #include <resolv.h>
+ #include <signal.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <syslog.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+ #include <sys/param.h>
+ #include <sys/resource.h>
+ #include <sys/sem.h>
+ #include <sys/shm.h>
+ #include <sys/socket.h>
+ #include <sys/select.h>
+ #include <sys/time.h>
+ #include <sys/times.h>
+ #include <sys/utsname.h>
+ #include <sys/wait.h>
+ #include <unistd.h>
+
+#if LINUX
+ #include <stdint.h>
+#endif
+
+#if SOLARIS
+ #include <netinet/in_systm.h>
+#endif
+
+#if BLD_FEATURE_FLOATING_POINT
+ #define __USE_ISOC99 1
+ #include <math.h>
+ #include <values.h>
+#endif
+
+#endif // LINUX || SOLARIS
+
+#if VXWORKS
+ #include <vxWorks.h>
+ #include <envLib.h>
+ #include <sys/types.h>
+ #include <time.h>
+ #include <arpa/inet.h>
+ #include <ctype.h>
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <limits.h>
+ #include <loadLib.h>
+ #include <netdb.h>
+ #include <net/if.h>
+ #include <netinet/tcp.h>
+ #include <netinet/in.h>
+ #include <netinet/ip.h>
+ #include <signal.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sysSymTbl.h>
+ #include <sys/fcntlcom.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+ #include <sys/socket.h>
+ #include <sys/times.h>
+ #include <sys/wait.h>
+ #include <unistd.h>
+ #include <unldLib.h>
+
+ #if BLD_FEATURE_FLOATING_POINT
+ #include <float.h>
+ #define __USE_ISOC99 1
+ #include <math.h>
+ #endif
+
+ #include <sockLib.h>
+ #include <inetLib.h>
+ #include <ioLib.h>
+ #include <pipeDrv.h>
+ #include <hostLib.h>
+ #include <netdb.h>
+ #include <tickLib.h>
+ #include <taskHookLib.h>
+
+#endif // VXWORKS
+
+#if MACOSX
+ #include <time.h>
+ #include <arpa/inet.h>
+ #include <ctype.h>
+ #include <fcntl.h>
+ #include <grp.h>
+ #include <errno.h>
+ #include <libgen.h>
+ #include <limits.h>
+ #include <mach-o/dyld.h>
+ #include <netdb.h>
+ #include <net/if.h>
+ #include <netinet/in_systm.h>
+ #include <netinet/in.h>
+ #include <netinet/tcp.h>
+ #include <netinet/ip.h>
+ #include <pthread.h>
+ #include <pwd.h>
+ #include <resolv.h>
+ #include <signal.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stdint.h>
+ #include <string.h>
+ #include <syslog.h>
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/param.h>
+ #include <sys/resource.h>
+ #include <sys/sem.h>
+ #include <sys/shm.h>
+ #include <sys/socket.h>
+ #include <sys/select.h>
+ #include <sys/time.h>
+ #include <sys/times.h>
+ #include <sys/types.h>
+ #include <sys/utsname.h>
+ #include <sys/wait.h>
+ #include <unistd.h>
+#endif // MACOSX
+
+#if WIN
+ #include <ctype.h>
+ #include <conio.h>
+ #include <direct.h>
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <io.h>
+ #include <limits.h>
+ #include <malloc.h>
+ #include <process.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <stdarg.h>
+ #include <time.h>
+ #define WIN32_LEAN_AND_MEAN
+ #include <winsock2.h>
+ #include <windows.h>
+ #include <winbase.h>
+ #if BLD_FEATURE_FLOATING_POINT
+ #include <float.h>
+ #endif
+ #include <shlobj.h>
+ #include <shellapi.h>
+ #include <wincrypt.h>
+#endif // WIN
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////// General Defines ///////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+#define MAXINT INT_MAX
+#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
+
+//
+// Set FD_SETSIZE to the maximum number of files (sockets) that you want to
+// support. It is used in select.cpp.
+//
+// #ifdef FD_SETSIZE
+// #undef FD_SETSIZE
+// #endif
+// #define FD_SETSIZE 128
+//
+
+typedef char *MprStr; // Used for dynamic strings
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// 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)
+#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
+
+ #if BLD_FEATURE_MALLOC
+ //
+ // PORTERS: You will need add assembler code for your architecture here
+ // only if you want to use the fast malloc (BLD_FEATURE_MALLOC)
+ //
+ #if UNUSED
+ #define MPR_GET_RETURN(ip) __builtin_return_address(0)
+ #else
+ #if BLD_HOST_CPU_ARCH == MPR_CPU_IX86
+ #define MPR_GET_RETURN(ip) \
+ asm("movl 4(%%ebp),%%eax ; movl %%eax,%0" : \
+ "=g" (ip) : \
+ : "eax")
+ #endif
+ #endif // UNUSED
+ #endif // BLD_FEATURE_MALLOC
+
+#if FUTURE
+// #define mprGetHiResTime(x) __asm__ __volatile__ ("rdtsc" : "=A" (x))
+// extern char *inet_ntoa_r(const struct in_addr in, char *buffer, int buflen);
+
+ //
+ // Atomic functions
+ //
+ typedef struct { volatile int counter; } mprAtomic_t;
+
+ #if BLD_FEATURE_MULTITHREAD
+ #define LOCK "lock ; "
+ #else
+ #define LOCK ""
+ #endif
+
+ static __inline__ void mprAtomicInc(mprAtomic_t* v) {
+ __asm__ __volatile__(
+ LOCK "incl %0"
+ :"=m" (v->counter)
+ :"m" (v->counter));
+ }
+
+ static __inline__ void mprAtomicDec(mprAtomic_t* v) {
+ __asm__ __volatile__(
+ LOCK "decl %0"
+ :"=m" (v->counter)
+ :"m" (v->counter));
+ }
+#endif // FUTURE
+
+#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)
+#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();
+
+ #if BLD_FEATURE_MALLOC
+ //
+ // PORTERS: You will need add assembler code for your architecture here
+ // only if you want to use the fast malloc (BLD_FEATURE_MALLOC)
+ //
+ #if UNUSED
+ #define MPR_GET_RETURN(ip) __builtin_return_address(0)
+ #else
+ #if BLD_HOST_CPU_ARCH == MPR_CPU_IX86
+ #define MPR_GET_RETURN(ip) \
+ asm("movl 4(%%ebp),%%eax ; movl %%eax,%0" : \
+ "=g" (ip) : \
+ : "eax")
+ #endif
+ #endif // UNUSED
+ #endif // BLD_FEATURE_MALLOC
+#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)
+#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
+
+ #if MPR_FEATURE_MALLOC
+ //
+ // PORTERS: You will need add assembler code for your architecture here
+ // only if you want to use the fast malloc (MPR_FEATURE_MALLOC)
+ //
+ #define MPR_GET_RETURN(ip) __builtin_return_address
+ #endif
+
+#if FUTURE
+// #define mprGetHiResTime(x) __asm__ __volatile__ ("rdtsc" : "=A" (x))
+// extern char *inet_ntoa_r(const struct in_addr in, char *buffer, int buflen);
+
+ //
+ // Atomic functions
+ //
+ typedef struct { volatile int counter; } mprAtomic_t;
+
+ #if MPR_FEATURE_MULTITHREAD
+ #define LOCK "lock ; "
+ #else
+ #define LOCK ""
+ #endif
+
+ static __inline__ void mprAtomicInc(mprAtomic_t* v) {
+ __asm__ __volatile__(
+ LOCK "incl %0"
+ :"=m" (v->counter)
+ :"m" (v->counter));
+ }
+
+ static __inline__ void mprAtomicDec(mprAtomic_t* v) {
+ __asm__ __volatile__(
+ LOCK "decl %0"
+ :"=m" (v->counter)
+ :"m" (v->counter));
+ }
+#endif
+#endif // MACOSX
+
+////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////// Windows Defines ///////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+#if WIN
+ typedef unsigned char uchar;
+ typedef unsigned int uint;
+ typedef unsigned long ulong;
+ typedef unsigned short ushort;
+
+#if BLD_FEATURE_INT64
+ typedef __int64 int64;
+ typedef unsigned __int64 uint64;
+ #define INT64(x) (x##i64)
+#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
+ #undef X_OK
+ #define X_OK 1
+ #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 access _access
+ #define close _close
+ #define fileno _fileno
+ #define fstat _fstat
+ #define getpid _getpid
+ #define open _open
+ #define putenv _putenv
+ #define read _read
+ #define stat _stat
+ #define umask _umask
+ #define unlink _unlink
+ #define write _write
+ #define strdup _strdup
+ #define lseek _lseek
+
+ #define mkdir(a,b) _mkdir(a)
+ #define rmdir(a) _rmdir(a)
+
+ #if BLD_FEATURE_MALLOC
+ //
+ // PORTERS: You will need add assembler code for your architecture here
+ // only if you want to use the fast malloc (BLD_FEATURE_MALLOC)
+ //
+ #if MPR_CPU_IX86
+ #define MPR_GET_RETURN(ip) \
+ __asm { mov eax, 4[ebp] } \
+ __asm { mov ip, eax }
+ #endif
+ #endif
+
+ #define MPR_DLL_EXT ".dll"
+
+ extern void srand48(long);
+ extern long lrand48(void);
+ extern long ulimit(int, ...);
+ extern long nap(long);
+ extern uint sleep(unsigned int secs);
+ extern uid_t getuid(void);
+ extern uid_t geteuid(void);
+
+#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)
+#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
+
+////////////////////////////////////////////////////////////////////////////////
+#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
+//