📄 my_global.h
字号:
/* Default size of a key cache block */#define KEY_CACHE_BLOCK_SIZE (uint) 1024 /* Some things that this system doesn't have */#define NO_HASH /* Not needed anymore */#ifdef __WIN__#define NO_DIR_LIBRARY /* Not standar dir-library */#define USE_MY_STAT_STRUCT /* For my_lib */#endif/* Some defines of functions for portability */#undef remove /* Crashes MySQL on SCO 5.0.0 */#ifndef __WIN__#ifdef OS2#define closesocket(A) soclose(A)#else#define closesocket(A) close(A)#endif#ifndef ulonglong2double#define ulonglong2double(A) ((double) (ulonglong) (A))#define my_off_t2double(A) ((double) (my_off_t) (A))#endif#endif#ifndef offsetof#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)#endif#define ulong_to_double(X) ((double) (ulong) (X))#define SET_STACK_SIZE(X) /* Not needed on real machines */#if !defined(HAVE_mit_thread) && !defined(HAVE_STRTOK_R)#define strtok_r(A,B,C) strtok((A),(B))#endif/* Remove some things that mit_thread break or doesn't support */#if defined(HAVE_mit_thread) && defined(THREAD)#undef HAVE_PREAD#undef HAVE_REALPATH#undef HAVE_MLOCK#undef HAVE_TEMPNAM /* Use ours */#undef HAVE_PTHREAD_SETPRIO#undef HAVE_FTRUNCATE#undef HAVE_READLINK#endif/* This is from the old m-machine.h file */#if SIZEOF_LONG_LONG > 4#define HAVE_LONG_LONG 1#endif/* Some pre-ANSI-C99 systems like AIX 5.1 and Linux/GCC 2.95 define ULONGLONG_MAX, LONGLONG_MIN, LONGLONG_MAX; we use them if they're defined. Also on Windows we define these constants by hand in config-win.h.*/#if defined(HAVE_LONG_LONG) && !defined(LONGLONG_MIN)#define LONGLONG_MIN ((long long) 0x8000000000000000LL)#define LONGLONG_MAX ((long long) 0x7FFFFFFFFFFFFFFFLL)#endif#if defined(HAVE_LONG_LONG) && !defined(ULONGLONG_MAX)/* First check for ANSI C99 definition: */#ifdef ULLONG_MAX#define ULONGLONG_MAX ULLONG_MAX#else#define ULONGLONG_MAX ((unsigned long long)(~0ULL))#endif#endif /* defined (HAVE_LONG_LONG) && !defined(ULONGLONG_MAX)*/#define INT_MIN32 (~0x7FFFFFFFL)#define INT_MAX32 0x7FFFFFFFL#define UINT_MAX32 0xFFFFFFFFL#define INT_MIN24 (~0x007FFFFF)#define INT_MAX24 0x007FFFFF#define UINT_MAX24 0x00FFFFFF#define INT_MIN16 (~0x7FFF)#define INT_MAX16 0x7FFF#define UINT_MAX16 0xFFFF#define INT_MIN8 (~0x7F)#define INT_MAX8 0x7F#define UINT_MAX8 0xFF/* From limits.h instead */#ifndef DBL_MIN#define DBL_MIN 4.94065645841246544e-324#define FLT_MIN ((float)1.40129846432481707e-45)#endif#ifndef DBL_MAX#define DBL_MAX 1.79769313486231470e+308#define FLT_MAX ((float)3.40282346638528860e+38)#endif#if !defined(HAVE_ISINF) && !defined(isinf)#define isinf(X) 0#endif/* Define missing math constants. */#ifndef M_PI#define M_PI 3.14159265358979323846#endif#ifndef M_E#define M_E 2.7182818284590452354#endif#ifndef M_LN2#define M_LN2 0.69314718055994530942#endif/* Max size that must be added to a so that we know Size to make adressable obj.*/#if SIZEOF_CHARP == 4typedef long my_ptrdiff_t;#elsetypedef long long my_ptrdiff_t;#endif#if HAVE_SIZE_Ttypedef size_t my_size_t;#elif SIZEOF_CHARP <= SIZEOF_LONGtypedef unsigned long my_size_t;#elsetypedef unsigned long long my_size_t;#endif #define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))#define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double))/* Size to make adressable obj. */#define ALIGN_PTR(A, t) ((t*) MY_ALIGN((A),sizeof(t))) /* Offset of field f in structure t */#define OFFSET(t, f) ((size_t)(char *)&((t *)0)->f)#define ADD_TO_PTR(ptr,size,type) (type) ((byte*) (ptr)+size)#define PTR_BYTE_DIFF(A,B) (my_ptrdiff_t) ((byte*) (A) - (byte*) (B))#define NullS (char *) 0/* Nowdays we do not support MessyDos */#ifndef NEAR#define NEAR /* Who needs segments ? */#define FAR /* On a good machine */#ifndef HUGE_PTR#define HUGE_PTR#endif#endif#if defined(__IBMC__) || defined(__IBMCPP__)/* This was _System _Export but caused a lot of warnings on _AIX43 */#define STDCALL#elif !defined( STDCALL)#define STDCALL#endif/* Typdefs for easyier portability */#if defined(VOIDTYPE)typedef void *gptr; /* Generic pointer */#elsetypedef char *gptr; /* Generic pointer */#endif#ifndef HAVE_INT_8_16_32typedef signed char int8; /* Signed integer >= 8 bits */typedef short int16; /* Signed integer >= 16 bits */#endif#ifndef HAVE_UCHARtypedef unsigned char uchar; /* Short for unsigned char */#endiftypedef unsigned char uint8; /* Short for unsigned integer >= 8 bits */typedef unsigned short uint16; /* Short for unsigned integer >= 16 bits */#if SIZEOF_INT == 4#ifndef HAVE_INT_8_16_32typedef int int32;#endiftypedef unsigned int uint32; /* Short for unsigned integer >= 32 bits */#elif SIZEOF_LONG == 4#ifndef HAVE_INT_8_16_32typedef long int32;#endiftypedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */#else#error "Neither int or long is of 4 bytes width"#endif#if !defined(HAVE_ULONG) && !defined(TARGET_OS_LINUX) && !defined(__USE_MISC)typedef unsigned long ulong; /* Short for unsigned long */#endif#ifndef longlong_defined#if defined(HAVE_LONG_LONG) && SIZEOF_LONG != 8typedef unsigned long long int ulonglong; /* ulong or unsigned long long */typedef long long int longlong;#elsetypedef unsigned long ulonglong; /* ulong or unsigned long long */typedef long longlong;#endif#endif#if defined(NO_CLIENT_LONG_LONG)typedef unsigned long my_ulonglong;#elif defined (__WIN__)typedef unsigned __int64 my_ulonglong;#elsetypedef unsigned long long my_ulonglong;#endif#ifdef USE_RAID/* The following is done with a if to not get problems with pre-processors with late define evaluation*/#if SIZEOF_OFF_T == 4#define SYSTEM_SIZEOF_OFF_T 4#else#define SYSTEM_SIZEOF_OFF_T 8#endif#undef SIZEOF_OFF_T#define SIZEOF_OFF_T 8#else#define SYSTEM_SIZEOF_OFF_T SIZEOF_OFF_T#endif /* USE_RAID */#if SIZEOF_OFF_T > 4typedef ulonglong my_off_t;#elsetypedef unsigned long my_off_t;#endif#define MY_FILEPOS_ERROR (~(my_off_t) 0)#if !defined(__WIN__) && !defined(OS2)typedef off_t os_off_t;#endif#if defined(__WIN__)#define socket_errno WSAGetLastError()#define SOCKET_EINTR WSAEINTR#define SOCKET_EAGAIN WSAEINPROGRESS#define SOCKET_ETIMEDOUT WSAETIMEDOUT#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK#define SOCKET_EADDRINUSE WSAEADDRINUSE#define SOCKET_ENFILE ENFILE#define SOCKET_EMFILE EMFILE#elif defined(OS2)#define socket_errno sock_errno()#define SOCKET_EINTR SOCEINTR#define SOCKET_EAGAIN SOCEINPROGRESS#define SOCKET_ETIMEDOUT SOCKET_EINTR#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK#define SOCKET_EADDRINUSE SOCEADDRINUSE#define SOCKET_ENFILE SOCENFILE#define SOCKET_EMFILE SOCEMFILE#define closesocket(A) soclose(A)#else /* Unix */#define socket_errno errno#define closesocket(A) close(A)#define SOCKET_EINTR EINTR#define SOCKET_EAGAIN EAGAIN#define SOCKET_ETIMEDOUT SOCKET_EINTR#define SOCKET_EWOULDBLOCK EWOULDBLOCK#define SOCKET_EADDRINUSE EADDRINUSE#define SOCKET_ENFILE ENFILE#define SOCKET_EMFILE EMFILE#endiftypedef uint8 int7; /* Most effective integer 0 <= x <= 127 */typedef short int15; /* Most effective integer 0 <= x <= 32767 */typedef char *my_string; /* String of characters */typedef unsigned long size_s; /* Size of strings (In string-funcs) */typedef int myf; /* Type of MyFlags in my_funcs */#ifndef byte_definedtypedef char byte; /* Smallest addressable unit */#endiftypedef char my_bool; /* Small bool */#if !defined(bool) && !defined(bool_defined) && (!defined(HAVE_BOOL) || !defined(__cplusplus))typedef char bool; /* Ordinary boolean values 0 1 */#endif /* Macros for converting *constants* to the right type */#define INT8(v) (int8) (v)#define INT16(v) (int16) (v)#define INT32(v) (int32) (v)#define MYF(v) (myf) (v)#ifndef LL#ifdef HAVE_LONG_LONG#define LL(A) A ## LL#else#define LL(A) A ## L#endif#endif#ifndef ULL#ifdef HAVE_LONG_LONG#define ULL(A) A ## ULL#else#define ULL(A) A ## UL#endif#endif/* Defines to make it possible to prioritize register assignments. No longer that important with modern compilers.*/#ifndef USING_X#define reg1 register#define reg2 register#define reg3 register#define reg4 register#define reg5 register#define reg6 register#define reg7 register#define reg8 register#define reg9 register#define reg10 register#define reg11 register#define reg12 register#define reg13 register#define reg14 register#define reg15 register#define reg16 register#endif/* Sometimes we want to make sure that the variable is not put into a register in debugging mode so we can see its value in the core*/#ifndef DBUG_OFF#define dbug_volatile volatile#else#define dbug_volatile#endif/* Defines for time function */#define SCALE_SEC 100#define SCALE_USEC 10000#define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */#define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */#ifdef HAVE_TIMESPEC_TS_SEC#ifndef set_timespec#define set_timespec(ABSTIME,SEC) \{ \ (ABSTIME).ts_sec=time(0) + (time_t) (SEC); \ (ABSTIME).ts_nsec=0; \}#endif /* !set_timespec */#ifndef set_timespec_nsec#define set_timespec_nsec(ABSTIME,NSEC) \{ \ ulonglong now= my_getsystime() + (NSEC/100); \ (ABSTIME).ts_sec= (now / ULL(10000000)); \ (ABSTIME).ts_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \}#endif /* !set_timespec_nsec */#else#ifndef set_timespec#define set_timespec(ABSTIME,SEC) \{\ struct timeval tv;\ gettimeofday(&tv,0);\ (ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\ (ABSTIME).tv_nsec=tv.tv_usec*1000;\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -