~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/include/univ.i

  • Committer: Eric Day
  • Date: 2009-10-31 21:53:33 UTC
  • mfrom: (1200 staging)
  • mto: This revision was merged to the branch mainline in revision 1202.
  • Revision ID: eday@oddments.org-20091031215333-j94bjoanwmi68p6f
Merged trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
4
4
Copyright (c) 2008, Google Inc.
 
5
Copyright (c) 2009, Sun Microsystems, Inc.
5
6
 
6
7
Portions of this file contain modifications contributed and copyrighted by
7
8
Google, Inc. Those modifications are gratefully acknowledged and are described
9
10
incorporated with their permission, and subject to the conditions contained in
10
11
the file COPYING.Google.
11
12
 
 
13
Portions of this file contain modifications contributed and copyrighted by
 
14
Sun Microsystems, Inc. Those modifications are gratefully acknowledged and
 
15
are described briefly in the InnoDB documentation. The contributions by
 
16
Sun Microsystems are incorporated with their permission, and subject to the
 
17
conditions contained in the file COPYING.Sun_Microsystems.
 
18
 
12
19
This program is free software; you can redistribute it and/or modify it under
13
20
the terms of the GNU General Public License as published by the Free Software
14
21
Foundation; version 2 of the License.
23
30
 
24
31
*****************************************************************************/
25
32
 
26
 
/***************************************************************************
 
33
/***********************************************************************//**
 
34
@file include/univ.i
27
35
Version control for database, common definitions, and include files
28
36
 
29
37
Created 1/20/1994 Heikki Tuuri
32
40
#ifndef univ_i
33
41
#define univ_i
34
42
 
35
 
#if (defined(__SUNPRO_C) || defined(__SUNPRO_CC))
36
 
# include <sun_prefetch.h>
37
 
#endif
38
 
 
39
43
#ifndef __cplusplus
40
44
# include <stdbool.h>
41
45
#endif
42
46
 
 
47
#ifdef UNIV_HOTBACKUP
 
48
#include "hb_univ.i"
 
49
#endif /* UNIV_HOTBACKUP */
 
50
 
43
51
#define INNODB_VERSION_MAJOR    1
44
52
#define INNODB_VERSION_MINOR    0
45
 
#define INNODB_VERSION_BUGFIX   3
 
53
#define INNODB_VERSION_BUGFIX   4
46
54
 
47
55
/* The following is the InnoDB version as shown in
48
56
SELECT plugin_version FROM information_schema.plugins;
62
70
                        INNODB_VERSION_MINOR,   \
63
71
                        INNODB_VERSION_BUGFIX)
64
72
 
 
73
#define REFMAN "http://dev.mysql.com/doc/refman/5.1/en/"
 
74
 
65
75
#ifdef MYSQL_DYNAMIC_PLUGIN
66
76
/* In the dynamic plugin, redefine some externally visible symbols
67
77
in order not to conflict with the symbols of a builtin InnoDB. */
78
88
 
79
89
# include <windows.h>
80
90
 
81
 
# if !defined(WIN64) && !defined(_WIN64)
82
 
#  define UNIV_CAN_USE_X86_ASSEMBLER
83
 
# endif
 
91
# if defined(HAVE_WINDOWS_ATOMICS)
 
92
/* If atomics are defined we use them in InnoDB mutex implementation */
 
93
#  define HAVE_ATOMIC_BUILTINS
 
94
# endif /* HAVE_WINDOWS_ATOMICS */
84
95
 
85
96
# ifdef _NT_
86
97
#  define __NT__
97
108
#  include <drizzled/global.h>
98
109
#  include <mysys/my_pthread.h>
99
110
# else
100
 
#  include <my_global.h>
101
 
#  include <my_pthread.h>
 
111
#  ifndef UNIV_HOTBACKUP
 
112
#   include <my_global.h>
 
113
#   include <my_pthread.h>
 
114
#  endif /* UNIV_HOTBACKUP */
102
115
# endif
103
116
 
104
117
/* Include <sys/stat.h> to get S_I... macros defined for os0file.c */
112
125
 
113
126
/* Include the header file generated by GNU autoconf */
114
127
# if !defined(__WIN__) && !defined(BUILD_DRIZZLE)
115
 
#  include <config.h>
 
128
#  ifndef UNIV_HOTBACKUP
 
129
#   include <config.h>
 
130
#  endif /* UNIV_HOTBACKUP */
116
131
# endif
117
132
 
118
133
# ifdef HAVE_SCHED_H
119
134
#  include <sched.h>
120
135
# endif
121
136
 
122
 
/* When compiling for Itanium IA64, undefine the flag below to prevent use
123
 
of the 32-bit x86 assembler in mutex operations. */
124
 
 
125
 
# if defined(__WIN__) && !defined(WIN64) && !defined(_WIN64)
126
 
#  define UNIV_CAN_USE_X86_ASSEMBLER
127
 
# endif
 
137
# if defined(HAVE_GCC_ATOMIC_BUILTINS) || defined(HAVE_SOLARIS_ATOMICS) \
 
138
     || defined(HAVE_WINDOWS_ATOMICS)
 
139
/* If atomics are defined we use them in InnoDB mutex implementation */
 
140
#  define HAVE_ATOMIC_BUILTINS
 
141
# endif /* (HAVE_GCC_ATOMIC_BUILTINS) || (HAVE_SOLARIS_ATOMICS)
 
142
        || (HAVE_WINDOWS_ATOMICS) */
128
143
 
129
144
/* For InnoDB rw_locks to work with atomics we need the thread_id
130
145
to be no more than machine word wide. The following enables using
131
146
atomics for InnoDB rw_locks where these conditions are met. */
132
 
#ifdef HAVE_GCC_ATOMIC_BUILTINS
 
147
#ifdef HAVE_ATOMIC_BUILTINS
133
148
/* if HAVE_ATOMIC_PTHREAD_T is defined at this point that means that
134
149
the code from plug.in has defined it and we do not need to include
135
150
ut0auxconf.h which would either define HAVE_ATOMIC_PTHREAD_T or will
142
157
# ifdef HAVE_ATOMIC_PTHREAD_T
143
158
#  define INNODB_RW_LOCKS_USE_ATOMICS
144
159
# endif /* HAVE_ATOMIC_PTHREAD_T */
145
 
#endif /* HAVE_GCC_ATOMIC_BUILTINS */
 
160
#endif /* HAVE_ATOMIC_BUILTINS */
146
161
 
147
162
/* We only try to do explicit inlining of functions with gcc and
148
 
Microsoft Visual C++ */
 
163
Sun Studio */
149
164
 
150
 
# if !defined(__GNUC__)
 
165
# if !defined(__GNUC__) && !(defined(__SUNPRO_C) || defined(__SUNPRO_CC))
151
166
#  undef  UNIV_MUST_NOT_INLINE                  /* Remove compiler warning */
152
167
#  define UNIV_MUST_NOT_INLINE
153
168
# endif
255
270
/* Definition for inline version */
256
271
 
257
272
#ifdef __WIN__
258
 
#define UNIV_INLINE     __inline
 
273
# define UNIV_INLINE    __inline
 
274
#elif defined(__SUNPRO_CC) || defined(__SUNPRO_C)
 
275
# define UNIV_INLINE static inline
259
276
#else
260
 
#define UNIV_INLINE static __inline__
 
277
# define UNIV_INLINE static __inline__
261
278
#endif
262
279
 
263
280
#else
334
351
#ifdef __WIN__
335
352
typedef __int64                 ib_int64_t;
336
353
typedef unsigned __int64        ib_uint64_t;
337
 
#else
 
354
#elif !defined(UNIV_HOTBACKUP)
338
355
/* Note: longlong and ulonglong come from MySQL headers. */
339
356
# if defined(BUILD_DRIZZLE)
340
357
typedef int64_t                 ib_int64_t;
349
366
# endif // DRIZZLE
350
367
#endif
351
368
 
 
369
#ifndef UNIV_HOTBACKUP
352
370
typedef unsigned long long int  ullint;
 
371
#endif /* UNIV_HOTBACKUP */
353
372
 
354
373
#ifndef __WIN__
355
374
#if SIZEOF_LONG != SIZEOF_VOIDP
407
426
/* Minimize cache-miss latency by moving data at addr into a cache before
408
427
it is read or written. */
409
428
# define UNIV_PREFETCH_RW(addr) __builtin_prefetch(addr, 1, 3)
410
 
#elif (defined(__SUNPRO_C) || defined(__SUNPRO_CC))
 
429
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
 
430
# include <sun_prefetch.h>
 
431
#if __SUNPRO_C >= 0x550
 
432
# undef UNIV_INTERN
 
433
# define UNIV_INTERN __hidden
 
434
#endif /* __SUNPRO_C >= 0x550 */
 
435
/* Use sun_prefetch when compile with Sun Studio */
411
436
# define UNIV_EXPECT(expr,value) (expr)
412
437
# define UNIV_LIKELY_NULL(expr) (expr)
413
438
# define UNIV_PREFETCH_R(addr) sun_prefetch_read_many((void *)(addr))