diff --git a/storage/innodb_plugin/plug.in b/storage/innodb_plugin/plug.in index 7650251..3cc22c5 100644 --- a/storage/innodb_plugin/plug.in +++ b/storage/innodb_plugin/plug.in @@ -56,180 +56,10 @@ MYSQL_PLUGIN_ACTIONS(innodb_plugin, [ esac AC_SUBST(INNODB_DYNAMIC_CFLAGS) - AC_MSG_CHECKING(whether GCC atomic builtins are available) - # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not - AC_TRY_RUN( - [ - int main() - { - long x; - long y; - long res; - char c; - - x = 10; - y = 123; - res = __sync_bool_compare_and_swap(&x, x, y); - if (!res || x != y) { - return(1); - } - - x = 10; - y = 123; - res = __sync_bool_compare_and_swap(&x, x + 1, y); - if (res || x != 10) { - return(1); - } - - x = 10; - y = 123; - res = __sync_add_and_fetch(&x, y); - if (res != 123 + 10 || x != 123 + 10) { - return(1); - } - - c = 10; - res = __sync_lock_test_and_set(&c, 123); - if (res != 10 || c != 123) { - return(1); - } - - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], - [GCC atomic builtins are available]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - - AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins) - # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not - AC_TRY_RUN( - [ - #include - #include - - int main(int argc, char** argv) { - pthread_t x1; - pthread_t x2; - pthread_t x3; - - memset(&x1, 0x0, sizeof(x1)); - memset(&x2, 0x0, sizeof(x2)); - memset(&x3, 0x0, sizeof(x3)); - - __sync_bool_compare_and_swap(&x1, x2, x3); - - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], - [pthread_t can be used by GCC atomic builtins]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - - AC_MSG_CHECKING(whether Solaris libc atomic functions are available) - # Define HAVE_IB_SOLARIS_ATOMICS if _all_ of the following - # functions are present. - AC_CHECK_FUNCS(atomic_add_long_nv \ - atomic_cas_32 \ - atomic_cas_64 \ - atomic_cas_ulong \ - atomic_swap_uchar) - - if test "${ac_cv_func_atomic_add_long_nv}" = "yes" -a \ - "${ac_cv_func_atomic_cas_32}" = "yes" -a \ - "${ac_cv_func_atomic_cas_64}" = "yes" -a \ - "${ac_cv_func_atomic_cas_ulong}" = "yes" -a \ - "${ac_cv_func_atomic_swap_uchar}" = "yes" ; then - - AC_DEFINE([HAVE_IB_SOLARIS_ATOMICS], [1], - [Define to 1 if Solaris libc atomic functions are available] - ) - fi - - AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions) - # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not - AC_TRY_RUN( - [ - #include - #include - - int main(int argc, char** argv) { - pthread_t x1; - pthread_t x2; - pthread_t x3; - - memset(&x1, 0x0, sizeof(x1)); - memset(&x2, 0x0, sizeof(x2)); - memset(&x3, 0x0, sizeof(x3)); - - if (sizeof(pthread_t) == 4) { - - atomic_cas_32(&x1, x2, x3); - - } else if (sizeof(pthread_t) == 8) { - - atomic_cas_64(&x1, x2, x3); - - } else { - - return(1); - } - - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], - [pthread_t can be used by solaris atomics]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - # this is needed to know which one of atomic_cas_32() or atomic_cas_64() # to use in the source AC_CHECK_SIZEOF([pthread_t], [], [#include ]) - # Check for x86 PAUSE instruction - AC_MSG_CHECKING(for x86 PAUSE instruction) - # We have to actually try running the test program, because of a bug - # in Solaris on x86_64, where it wrongly reports that PAUSE is not - # supported when trying to run an application. See - # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684 - # We use ib_ prefix to avoid collisoins if this code is added to - # mysql's configure.in. - AC_TRY_RUN( - [ - int main() { - __asm__ __volatile__ ("pause"); - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ], - [ - AC_MSG_RESULT(no) - ] - ) ]) # vim: set ft=config: diff --git a/storage/xtradb/plug.in b/storage/xtradb/plug.in index 3fadacc..a33f4dc 100644 --- a/storage/xtradb/plug.in +++ b/storage/xtradb/plug.in @@ -56,215 +56,10 @@ MYSQL_PLUGIN_ACTIONS(xtradb, [ esac AC_SUBST(INNODB_DYNAMIC_CFLAGS) - AC_MSG_CHECKING(whether GCC atomic builtins are available) - # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not - AC_TRY_RUN( - [ - int main() - { - long x; - long y; - long res; - char c; - - x = 10; - y = 123; - res = __sync_bool_compare_and_swap(&x, x, y); - if (!res || x != y) { - return(1); - } - - x = 10; - y = 123; - res = __sync_bool_compare_and_swap(&x, x + 1, y); - if (res || x != 10) { - return(1); - } - - x = 10; - y = 123; - res = __sync_add_and_fetch(&x, y); - if (res != 123 + 10 || x != 123 + 10) { - return(1); - } - - c = 10; - res = __sync_lock_test_and_set(&c, 123); - if (res != 10 || c != 123) { - return(1); - } - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], - [GCC atomic builtins are available]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - - AC_MSG_CHECKING(whether GCC 64-bit atomic builtins are available) - # either define HAVE_IB_GCC_ATOMIC_BUILTINS_64 or not - AC_TRY_RUN( - [ - #include - int main() - { - int64_t x, y, res; - - x = 10; - y = 123; - res = __sync_bool_compare_and_swap(&x, x, y); - if (!res || x != y) { - return(1); - } - - x = 10; - y = 123; - res = __sync_add_and_fetch(&x, y); - if (res != 123 + 10 || x != 123 + 10) { - return(1); - } - - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS_64], [1], - [GCC 64-bit atomic builtins are available]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - - AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins) - # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not - AC_TRY_RUN( - [ - #include - #include - - int main(int argc, char** argv) { - pthread_t x1; - pthread_t x2; - pthread_t x3; - - memset(&x1, 0x0, sizeof(x1)); - memset(&x2, 0x0, sizeof(x2)); - memset(&x3, 0x0, sizeof(x3)); - - __sync_bool_compare_and_swap(&x1, x2, x3); - - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], - [pthread_t can be used by GCC atomic builtins]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - - AC_MSG_CHECKING(whether Solaris libc atomic functions are available) - # Define HAVE_IB_SOLARIS_ATOMICS if _all_ of the following - # functions are present. - AC_CHECK_FUNCS(atomic_add_long_nv \ - atomic_cas_32 \ - atomic_cas_64 \ - atomic_cas_ulong \ - atomic_swap_uchar) - - if test "${ac_cv_func_atomic_add_long_nv}" = "yes" -a \ - "${ac_cv_func_atomic_cas_32}" = "yes" -a \ - "${ac_cv_func_atomic_cas_64}" = "yes" -a \ - "${ac_cv_func_atomic_cas_ulong}" = "yes" -a \ - "${ac_cv_func_atomic_swap_uchar}" = "yes" ; then - - AC_DEFINE([HAVE_IB_SOLARIS_ATOMICS], [1], - [Define to 1 if Solaris libc atomic functions are available] - ) - fi - - AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions) - # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not - AC_TRY_RUN( - [ - #include - #include - - int main(int argc, char** argv) { - pthread_t x1; - pthread_t x2; - pthread_t x3; - - memset(&x1, 0x0, sizeof(x1)); - memset(&x2, 0x0, sizeof(x2)); - memset(&x3, 0x0, sizeof(x3)); - - if (sizeof(pthread_t) == 4) { - - atomic_cas_32(&x1, x2, x3); - - } else if (sizeof(pthread_t) == 8) { - - atomic_cas_64(&x1, x2, x3); - - } else { - - return(1); - } - - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], - [pthread_t can be used by solaris atomics]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ] - ) - # this is needed to know which one of atomic_cas_32() or atomic_cas_64() # to use in the source AC_CHECK_SIZEOF([pthread_t], [], [#include ]) - # Check for x86 PAUSE instruction - AC_MSG_CHECKING(for x86 PAUSE instruction) - # We have to actually try running the test program, because of a bug - # in Solaris on x86_64, where it wrongly reports that PAUSE is not - # supported when trying to run an application. See - # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684 - # We use ib_ prefix to avoid collisoins if this code is added to - # mysql's configure.in. - AC_TRY_RUN( - [ - int main() { - __asm__ __volatile__ ("pause"); - return(0); - } - ], - [ - AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) - AC_MSG_RESULT(yes) - ], - [ - AC_MSG_RESULT(no) - ], - [ - AC_MSG_RESULT(no) - ] - ) ]) # vim: set ft=config: