/* Copyright (C) 2003 MySQL AB This program is free software; 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. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef PORT_DEFS_H #define PORT_DEFS_H /* This file contains varoius declarations/definitions needed in the port of AXEVM to NT, as well as backporting to Solaris... $Id: PortDefs.h,v 1.5 2003/10/07 07:59:59 mikael Exp $ */ #ifdef NDB_WIN32 #include struct tms { time_t tms_utime; // user time time_t tms_stime; // system time time_t tms_cutime; // user time of children time_t tms_cstime; // system time of children }; struct timespec { long tv_sec; // Seconds long tv_nsec; // Nanoseconds }; #define strcasecmp(a,b) _strcmpi(a,b) // Exports a WIN32 getopt function extern int optind; extern char *optarg; int getopt(int, char **, char *opts); #endif // NDB_WIN32 #ifdef NDB_ALPHA #ifdef NDB_GCC extern int gnuShouldNotUseRPCC(); #define RPCC() gnuShouldNotUseRPCC(); #else #ifdef NDB_WIN32 #ifdef __cplusplus extern "C" { #endif //__cplusplus u_int64 __asm(char *, ...); double __dasm(char *, ...); float __fasm(char *, ...); void _AcquireSpinLock(long *); void _ReleaseSpinLock(long *); int __ADD_ATOMIC_LONG2(void *, int); #ifdef __cplusplus }; #endif //__cplusplus #pragma intrinsic (__asm, __dasm, __fasm) #pragma intrinsic(_ReleaseSpinLock, _AcquireSpinLock) #pragma intrinsic(__ADD_ATOMIC_LONG2) #endif // NDB_WIN32 #define RPCC() ((int)__asm(" rpcc v0;")) #define MB() __asm(" mb;"); #define WMB() __asm(" wmb;"); #ifdef USE_INITIALSP #define IS_IP() (__asm(" mov sp,v0;") < IPinitialSP) #else // USE_INITIALSP #define IS_IP() (((__asm(" rpcc v0;") >> 32) & 0x7) == IP_CPU) #endif #endif //NDB_GCC #else // NDB_ALPHA #if defined NDB_SPARC #define MB() asm ("membar 0x0;"); // LoadLoad #define WMB() asm ("membar 0x3;"); // StoreStore #else // NDB_SPARC #define MB() #define WMB() #endif // NDB_SPARC #define IS_IP() (1==1) extern int shouldNotUseRPCC(); #define RPCC() shouldNotUseRPCC(); #endif // NDB_ALPHA #endif