⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.h

📁 php-4.4.7学习linux时下载的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#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#ifdef HAVE_LINUXTHREADS/* #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C)) *//* #define sigset(A,B) signal((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#if defined(HAVE_LONG_LONG) && !defined(LONGLONG_MIN)#define LONGLONG_MIN	((long long) 0x8000000000000000LL)#define LONGLONG_MAX	((long long) 0x7FFFFFFFFFFFFFFFLL)#endif#if SIZEOF_LONG == 4#define INT_MIN32	(long) 0x80000000L#define INT_MAX32	(long) 0x7FFFFFFFL#define INT_MIN24	((long) 0xff800000L)#define INT_MAX24	0x007fffffL#define INT_MIN16	((short int) 0x8000)#define INT_MAX16	0x7FFF#define INT_MIN8	((char) 0x80)#define INT_MAX8	((char) 0x7F)#else  /* Probably Alpha */#define INT_MIN32	((long) (int) 0x80000000)#define INT_MAX32	((long) (int) 0x7FFFFFFF)#define INT_MIN24	((long) (int) 0xff800000)#define INT_MAX24	((long) (int) 0x007fffff)#define INT_MIN16	((short int) 0xffff8000)#define INT_MAX16	((short int) 0x00007FFF)#endif/* 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/* Max size that must be added to a so that we know Size to make   adressable obj. */typedef long		my_ptrdiff_t;#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 filed 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__)#define STDCALL _System _Export#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 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 */#elseerror "Neither int or long is of 4 bytes width"#endif#if !defined(HAVE_ULONG) && !defined(HAVE_LINUXTHREADS) && !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#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_ENFILE	ENFILE#define SOCKET_EMFILE	EMFILE#elif defined(OS2)#define socket_errno	sock_errno()#define SOCKET_EINTR	SOCEINTR #define SOCKET_EAGAIN	SOCEINPROGRESS#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK#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_EWOULDBLOCK EWOULDBLOCK#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)/* Defines to make it possible to prioritize register assignments. No   longer needed with moder 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/* 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 *//*** Define-funktions for reading and storing in machine independent format**  (low byte first)*//* Optimized store functions for Intel x86 */#ifdef __i386__#define sint2korr(A)	(*((int16 *) (A)))#define sint3korr(A)	((int32) ((((uchar) (A)[2]) & 128) ? \				  (((uint32) 255L << 24) | \				   (((uint32) (uchar) (A)[2]) << 16) |\				   (((uint32) (uchar) (A)[1]) << 8) | \				   ((uint32) (uchar) (A)[0])) : \				  (((uint32) (uchar) (A)[2]) << 16) |\				  (((uint32) (uchar) (A)[1]) << 8) | \				  ((uint32) (uchar) (A)[0])))#define sint4korr(A)	(*((long *) (A)))#define uint2korr(A)	(*((uint16 *) (A)))#define uint3korr(A)	(long) (*((unsigned long *) (A)) & 0xFFFFFF)#define uint4korr(A)	(*((unsigned long *) (A)))#define uint5korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\				    (((uint32) ((uchar) (A)[1])) << 8) +\				    (((uint32) ((uchar) (A)[2])) << 16) +\				    (((uint32) ((uchar) (A)[3])) << 24)) +\			 	    (((ulonglong) ((uchar) (A)[4])) << 32))#define uint8korr(A)	(*((ulonglong *) (A)))#define sint8korr(A)	(*((longlong *) (A)))#define int2store(T,A)	*((uint16*) (T))= (uint16) (A)#define int3store(T,A)		{ *(T)=  (uchar) ((A));\				  *(T+1)=(uchar) (((uint) (A) >> 8));\				  *(T+2)=(uchar) (((A) >> 16)); }#define int4store(T,A)	*((long *) (T))= (long) (A)#define int5store(T,A)	{ *(T)= (uchar)((A));\			  *((T)+1)=(uchar) (((A) >> 8));\			  *((T)+2)=(uchar) (((A) >> 16));\			  *((T)+3)=(uchar) (((A) >> 24)); \			  *((T)+4)=(uchar) (((A) >> 32)); }#define int8store(T,A)	*((ulonglong *) (T))= (ulonglong) (A)typedef union {  double v;  long m[2];} doubleget_union;#define doubleget(V,M)	{ ((doubleget_union *)&V)->m[0] = *((long*) M); \			  ((doubleget_union *)&V)->m[1] = *(((long*) M)+1); }#define doublestore(T,V) { *((long *) T) = ((doubleget_union *)&V)->m[0]; \			   *(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; }#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }#define float8get(V,M) doubleget((V),(M))#define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float))#define float8store(V,M) doublestore((V),(M))#endif /* __i386__ */ #ifndef sint2korr#define sint2korr(A)	(int16) (((int16) ((uchar) (A)[0])) +\				 ((int16) ((int16) (A)[1]) << 8))#define sint3korr(A)	((int32) ((((uchar) (A)[2]) & 128) ? \				  (((uint32) 255L << 24) | \				   (((uint32) (uchar) (A)[2]) << 16) |\				   (((uint32) (uchar) (A)[1]) << 8) | \				   ((uint32) (uchar) (A)[0])) : \				  (((uint32) (uchar) (A)[2]) << 16) |\				  (((uint32) (uchar) (A)[1]) << 8) | \				  ((uint32) (uchar) (A)[0])))#define sint4korr(A)	(int32) (((int32) ((uchar) (A)[0])) +\				(((int32) ((uchar) (A)[1]) << 8)) +\				(((int32) ((uchar) (A)[2]) << 16)) +\				(((int32) ((int16) (A)[3]) << 24)))#define sint8korr(A)	(longlong) uint8korr(A)#define uint2korr(A)	(uint16) (((uint16) ((uchar) (A)[0])) +\				  ((uint16) ((uchar) (A)[1]) << 8))#define uint3korr(A)	(uint32) (((uint32) ((uchar) (A)[0])) +\				  (((uint32) ((uchar) (A)[1])) << 8) +\				  (((uint32) ((uchar) (A)[2])) << 16))#define uint4korr(A)	(uint32) (((uint32) ((uchar) (A)[0])) +\				  (((uint32) ((uchar) (A)[1])) << 8) +\				  (((uint32) ((uchar) (A)[2])) << 16) +\				  (((uint32) ((uchar) (A)[3])) << 24))#define uint5korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\				    (((uint32) ((uchar) (A)[1])) << 8) +\				    (((uint32) ((uchar) (A)[2])) << 16) +\				    (((uint32) ((uchar) (A)[3])) << 24)) +\			 	    (((ulonglong) ((uchar) (A)[4])) << 32))#define uint8korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\				    (((uint32) ((uchar) (A)[1])) << 8) +\				    (((uint32) ((uchar) (A)[2])) << 16) +\				    (((uint32) ((uchar) (A)[3])) << 24)) +\			(((ulonglong) (((uint32) ((uchar) (A)[4])) +\				    (((uint32) ((uchar) (A)[5])) << 8) +\				    (((uint32) ((uchar) (A)[6])) << 16) +\				    (((uint32) ((uchar) (A)[7])) << 24))) <<\			 	    32))#define int2store(T,A)		{ uint def_temp= (uint) (A) ;\				  *((uchar*) (T))=  (uchar)(def_temp); \				  *((uchar*) (T+1))=(uchar)((def_temp >> 8)); }#define int3store(T,A)		{ /*lint -save -e734 */\				  *((T))=(char) ((A));\				  *((T)+1)=(char) (((A) >> 8));\				  *((T)+2)=(char) (((A) >> 16)); \				  /*lint -restore */}#define int4store(T,A)		{ *(T)=(char) ((A));\				  *((T)+1)=(char) (((A) >> 8));\				  *((T)+2)=(char) (((A) >> 16));\				  *((T)+3)=(char) (((A) >> 24)); }#define int5store(T,A)		{ *(T)=((A));\				  *((T)+1)=(((A) >> 8));\				  *((T)+2)=(((A) >> 16));\				  *((T)+3)=(((A) >> 24)); \				  *((T)+4)=(((A) >> 32)); }#define int8store(T,A)		{ uint def_temp= (uint) (A), def_temp2= (uint) ((A) >> 32); \				  int4store((T),def_temp); \				  int4store((T+4),def_temp2); \				}#ifdef WORDS_BIGENDIAN#define float4store(T,A)    { *(T)= ((byte *) &A)[3];\                              *((T)+1)=(char) ((byte *) &A)[2];\                              *((T)+2)=(char) ((byte *) &A)[1];\                              *((T)+3)=(char) ((byte *) &A)[0]; }#define float4get(V,M)      { float def_temp;\                              ((byte*) &def_temp)[0]=(M)[3];\                              ((byte*) &def_temp)[1]=(M)[2];\                              ((byte*) &def_temp)[2]=(M)[1];\                              ((byte*) &def_temp)[3]=(M)[0];\                              (V)=def_temp; }#define float8store(T,V)    { *(T)= ((byte *) &V)[7];\                              *((T)+1)=(char) ((byte *) &V)[6];\                              *((T)+2)=(char) ((byte *) &V)[5];\                              *((T)+3)=(char) ((byte *) &V)[4];\                              *((T)+4)=(char) ((byte *) &V)[3];\                              *((T)+5)=(char) ((byte *) &V)[2];\                              *((T)+6)=(char) ((byte *) &V)[1];\                              *((T)+7)=(char) ((byte *) &V)[0]; }#define float8get(V,M)	    { double def_temp;\                              ((byte*) &def_temp)[0]=(M)[7];\                              ((byte*) &def_temp)[1]=(M)[6];\                              ((byte*) &def_temp)[2]=(M)[5];\                              ((byte*) &def_temp)[3]=(M)[4];\                              ((byte*) &def_temp)[4]=(M)[3];\                              ((byte*) &def_temp)[5]=(M)[2];\                              ((byte*) &def_temp)[6]=(M)[1];\                              ((byte*) &def_temp)[7]=(M)[0];\			      (V) = def_temp; }#else#define float4get(V,M)   memcpy_fixed((byte*) &V,(byte*) (M),sizeof(float))#define float4store(V,M) memcpy_fixed((byte*) V,(byte*) (&M),sizeof(float))#if defined(__FLOAT_WORD_ORDER) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN)#define doublestore(T,V)    { *(T)= ((byte *) &V)[4];\                              *((T)+1)=(char) ((byte *) &V)[5];\                              *((T)+2)=(char) ((byte *) &V)[6];\                              *((T)+3)=(char) ((byte *) &V)[7];\                              *((T)+4)=(char) ((byte *) &V)[0];\                              *((T)+5)=(char) ((byte *) &V)[1];\                              *((T)+6)=(char) ((byte *) &V)[2];\                              *((T)+7)=(char) ((byte *) &V)[3]; }#define doubleget(V,M) { double def_temp;\                              ((byte*) &def_temp)[0]=(M)[4];\                              ((byte*) &def_temp)[1]=(M)[5];\                              ((byte*) &def_temp)[2]=(M)[6];\                              ((byte*) &def_temp)[3]=(M)[7];\                              ((byte*) &def_temp)[4]=(M)[0];\                              ((byte*) &def_temp)[5]=(M)[1];\                              ((byte*) &def_temp)[6]=(M)[2];\                              ((byte*) &def_temp)[7]=(M)[3];\			      (V) = def_temp; }#endif /* __FLOAT_WORD_ORDER */#define float8get(V,M)   doubleget((V),(M))#define float8store(V,M) doublestore((V),(M))#endif /* WORDS_BIGENDIAN */#endif /* sint2korr *//* Define-funktions for reading and storing in machine format from/to   short/long to/from some place in memory V should be a (not   register) variable, M is a pointer to byte */#ifdef WORDS_BIGENDIAN#define ushortget(V,M)	{ V = (uint16) (((uint16) ((uchar) (M)[1]))+\					((uint16) ((uint16) (M)[0]) << 8)); }#define shortget(V,M)	{ V = (short) (((short) ((uchar) (M)[1]))+\				       ((short) ((short) (M)[0]) << 8)); }#define longget(V,M)	{ int32 def_temp;\			  ((byte*) &def_temp)[0]=(M)[0];\			  ((byte*) &def_temp)[1]=(M)[1];\			  ((byte*) &def_temp)[2]=(M)[2];\			  ((byte*) &def_temp)[3]=(M)[3];\			    (V)=def_temp; }#define ulongget(V,M)	{ uint32 def_temp;\			  ((byte*) &def_temp)[0]=(M)[0];\			  ((byte*) &def_temp)[1]=(M)[1];\			  ((byte*) &def_temp)[2]=(M)[2];\			  ((byte*) &def_temp)[3]=(M)[3];\			    (V)=def_temp; }#define shortstore(T,A) { uint def_temp=(uint) (A) ;\			  *(T+1)=(char)(def_temp); \			  *(T+0)=(char)(def_temp >> 8); }#define longstore(T,A)	{ *((T)+3)=((A));\			  *((T)+2)=(((A) >> 8));\			  *((T)+1)=(((A) >> 16));\			  *((T)+0)=(((A) >> 24)); }#define doubleget(V,M)	 memcpy((byte*) &V,(byte*) (M),sizeof(double))#define doublestore(T,V) memcpy((byte*) (T),(byte*) &V,sizeof(double))#define longlongget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(ulonglong))#define longlongstore(T,V) memcpy((byte*) (T),(byte*) &V,sizeof(ulonglong))#else#define ushortget(V,M)	{ V = uint2korr(M); }#define shortget(V,M)	{ V = sint2korr(M); }#define longget(V,M)	{ V = sint4korr(M); }#define ulongget(V,M)   { V = uint4korr(M); }#define shortstore(T,V) int2store(T,V)#define longstore(T,V)	int4store(T,V)#ifndef doubleget#define doubleget(V,M)	 memcpy_fixed((byte*) &V,(byte*) (M),sizeof(double))#define doublestore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(double))#endif /* doubleget */#define longlongget(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(ulonglong))#define longlongstore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(ulonglong))#endif /* WORDS_BIGENDIAN *//* sprintf does not always return the number of bytes :- */#ifdef SPRINTF_RETURNS_INT#define my_sprintf(buff,args) sprintf args#else#ifdef SPRINTF_RETURNS_PTR#define my_sprintf(buff,args) ((int)(sprintf args - buff))#else#define my_sprintf(buff,args) sprintf args,strlen(buff)#endif#endif#ifndef THREAD#define thread_safe_increment(V,L) (V)++#define thread_safe_add(V,C,L)     (V)+=(C)#define thread_safe_sub(V,C,L)     (V)-=(C)#define statistic_increment(V,L)   (V)++#define statistic_add(V,C,L)       (V)+=(C)#endif#endif /* _global_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -