univ.i
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /***************************************************************************
  2. Version control for database, common definitions, and include files
  3. (c) 1994 - 2000 Innobase Oy
  4. Created 1/20/1994 Heikki Tuuri
  5. ****************************************************************************/
  6. #ifndef univ_i
  7. #define univ_i
  8. #if (defined(_WIN32) || defined(_WIN64))
  9. #define __WIN__
  10. #include <windows.h>
  11. /* If you want to check for errors with compiler level -W4,
  12. comment out the above include of windows.h and let the following defines
  13. be defined:
  14. #define HANDLE void*
  15. #define CRITICAL_SECTION ulint
  16. */
  17. #else
  18. /* The Unix version */
  19. /* Include two header files from MySQL to make the Unix flavor used
  20. in compiling more Posix-compatible. We assume that 'innobase' is a
  21. subdirectory of 'mysql'. */
  22. #include <global.h>
  23. #include <my_pthread.h>
  24. #undef PACKAGE
  25. #undef VERSION
  26. /* Include the header file generated by GNU autoconf */
  27. #include "../ib_config.h"
  28. #ifdef HAVE_PREAD
  29. #define HAVE_PWRITE
  30. #endif
  31. #endif
  32. /* DEBUG VERSION CONTROL
  33. ===================== */
  34. /* Make a non-inline debug version */
  35. /*
  36. #define UNIV_DEBUG
  37. #define UNIV_MEM_DEBUG
  38. #define UNIV_SYNC_DEBUG
  39. #define UNIV_SEARCH_DEBUG
  40. #define UNIV_IBUF_DEBUG
  41. #define UNIV_SYNC_PERF_STAT
  42. #define UNIV_SEARCH_PERF_STAT
  43. */
  44. #define UNIV_LIGHT_MEM_DEBUG
  45. #define YYDEBUG 1
  46. /*
  47. #define UNIV_SQL_DEBUG
  48. #define UNIV_LOG_DEBUG
  49. */
  50. /* the above option prevents forcing of log to disk
  51. at a buffer page write: it should be tested with this
  52. option off; also some ibuf tests are suppressed */
  53. /*
  54. #define UNIV_BASIC_LOG_DEBUG
  55. */
  56. /* the above option enables basic recovery debugging:
  57. new allocated file pages are reset */
  58. #if (!defined(UNIV_DEBUG) && !defined(INSIDE_HA_INNOBASE_CC))
  59. /* Definition for inline version */
  60. #ifdef __WIN__
  61. #define UNIV_INLINE   __inline
  62. #else
  63. /* config.h contains the right def for 'inline' for the current compiler */
  64. #define UNIV_INLINE  extern inline
  65. #endif
  66. #else
  67. /* If we want to compile a noninlined version we use the following macro
  68. definitions: */
  69. #define UNIV_NONINL
  70. #define UNIV_INLINE
  71. #endif /* UNIV_DEBUG */
  72. #ifdef _WIN32
  73. #define UNIV_WORD_SIZE 4
  74. #elif defined(_WIN64)
  75. #define UNIV_WORD_SIZE 8
  76. #else
  77. /* MySQL config.h generated by GNU autoconf will define SIZEOF_LONG in Posix */
  78. #define UNIV_WORD_SIZE SIZEOF_LONG
  79. #endif
  80. /* The following alignment is used in memory allocations in memory heap
  81. management to ensure correct alignment for doubles etc. */
  82. #define UNIV_MEM_ALIGNMENT      8
  83. /* The following alignment is used in aligning lints etc. */
  84. #define UNIV_WORD_ALIGNMENT UNIV_WORD_SIZE
  85. /*
  86. DATABASE VERSION CONTROL
  87. ========================
  88. */
  89. /* The universal page size of the database */
  90. #define UNIV_PAGE_SIZE          (2 * 8192) /* NOTE! Currently, this has to be a
  91. power of 2 */
  92. /* The 2-logarithm of UNIV_PAGE_SIZE: */
  93. #define UNIV_PAGE_SIZE_SHIFT 14
  94. /* Maximum number of parallel threads in a parallelized operation */
  95. #define UNIV_MAX_PARALLELISM 32
  96. /*
  97. UNIVERSAL TYPE DEFINITIONS
  98. ==========================
  99. */
  100. /* Note that inside MySQL 'byte' is defined as char on Linux! */
  101. #define byte unsigned char
  102. /* Another basic type we use is unsigned long integer which is intended to be
  103. equal to the word size of the machine. */
  104. typedef unsigned long int ulint;
  105. typedef long int lint;
  106. /* The following type should be at least a 64-bit floating point number */
  107. typedef double utfloat;
  108. /* The 'undefined' value for a ulint */
  109. #define ULINT_UNDEFINED ((ulint)(-1))
  110. /* The undefined 32-bit unsigned integer */
  111. #define ULINT32_UNDEFINED 0xFFFFFFFF
  112. /* Maximum value for a ulint */
  113. #define ULINT_MAX ((ulint)(-2))
  114. /* This 'ibool' type is used within Innobase. Remember that different included
  115. headers may define 'bool' differently. Do not assume that 'bool' is a ulint! */
  116. #define ibool ulint
  117. #ifndef TRUE
  118. #define TRUE    1
  119. #define FALSE   0
  120. #endif
  121. /* The following number as the length of a logical field means that the field
  122. has the SQL NULL as its value. */
  123. #define UNIV_SQL_NULL  ULINT_UNDEFINED
  124. /* The following definition of __FILE__ removes compiler warnings
  125. associated with const char* / char* mismatches with __FILE__ */
  126. #define IB__FILE__ ((char*)__FILE__)
  127. #include <stdio.h>
  128. #include "ut0dbg.h"
  129. #include "ut0ut.h"
  130. #include "db0err.h"
  131. #endif