mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
Merge branch '10.0' into bb-10.1-merge
Conflicts: .bzrignore VERSION cmake/plugin.cmake debian/dist/Debian/control debian/dist/Ubuntu/control mysql-test/r/join_outer.result mysql-test/r/join_outer_jcl6.result mysql-test/r/null.result mysql-test/r/old-mode.result mysql-test/r/union.result mysql-test/t/join_outer.test mysql-test/t/null.test mysql-test/t/old-mode.test mysql-test/t/union.test packaging/rpm-oel/mysql.spec.in scripts/mysql_config.sh sql/ha_ndbcluster.cc sql/ha_ndbcluster_binlog.cc sql/ha_ndbcluster_cond.cc sql/item_cmpfunc.h sql/lock.cc sql/sql_select.cc sql/sql_show.cc sql/sql_update.cc sql/sql_yacc.yy storage/innobase/buf/buf0flu.cc storage/innobase/fil/fil0fil.cc storage/innobase/include/srv0srv.h storage/innobase/lock/lock0lock.cc storage/tokudb/CMakeLists.txt storage/xtradb/buf/buf0flu.cc storage/xtradb/fil/fil0fil.cc storage/xtradb/include/srv0srv.h storage/xtradb/lock/lock0lock.cc support-files/mysql.spec.sh
This commit is contained in:
commit
853077ad7e
2354 changed files with 594804 additions and 12493 deletions
|
|
@ -80,15 +80,11 @@ ib_mutex_test_and_set(
|
|||
ib_mutex_t* mutex) /*!< in: mutex */
|
||||
{
|
||||
#if defined(HAVE_ATOMIC_BUILTINS)
|
||||
# if defined(HAVE_ATOMIC_BUILTINS_BYTE)
|
||||
return(os_atomic_test_and_set_byte(&mutex->lock_word, 1));
|
||||
# else
|
||||
return(os_atomic_test_and_set_ulint(&mutex->lock_word, 1));
|
||||
# endif
|
||||
return(os_atomic_test_and_set_byte_acquire(&mutex->lock_word, 1));
|
||||
#else
|
||||
ibool ret;
|
||||
|
||||
ret = os_fast_mutex_trylock(&(mutex->os_fast_mutex));
|
||||
ret = os_fast_mutex_trylock_full_barrier(&(mutex->os_fast_mutex));
|
||||
|
||||
if (ret == 0) {
|
||||
/* We check that os_fast_mutex_trylock does not leak
|
||||
|
|
@ -96,7 +92,6 @@ ib_mutex_test_and_set(
|
|||
ut_a(mutex->lock_word == 0);
|
||||
|
||||
mutex->lock_word = 1;
|
||||
os_wmb;
|
||||
}
|
||||
|
||||
return((byte) ret);
|
||||
|
|
@ -113,11 +108,14 @@ mutex_reset_lock_word(
|
|||
ib_mutex_t* mutex) /*!< in: mutex */
|
||||
{
|
||||
#if defined(HAVE_ATOMIC_BUILTINS)
|
||||
os_atomic_lock_release_byte(&mutex->lock_word);
|
||||
/* In theory __sync_lock_release should be used to release the lock.
|
||||
Unfortunately, it does not work properly alone. The workaround is
|
||||
that more conservative __sync_lock_test_and_set is used instead. */
|
||||
os_atomic_test_and_set_byte_release(&mutex->lock_word, 0);
|
||||
#else
|
||||
mutex->lock_word = 0;
|
||||
|
||||
os_fast_mutex_unlock(&(mutex->os_fast_mutex));
|
||||
os_fast_mutex_unlock_full_barrier(&(mutex->os_fast_mutex));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -149,7 +147,6 @@ mutex_get_waiters(
|
|||
|
||||
ptr = &(mutex->waiters);
|
||||
|
||||
os_rmb;
|
||||
return(*ptr); /* Here we assume that the read of a single
|
||||
word from memory is atomic */
|
||||
}
|
||||
|
|
@ -184,7 +181,6 @@ mutex_exit_func(
|
|||
to wake up possible hanging threads if
|
||||
they are missed in mutex_signal_object. */
|
||||
|
||||
os_isync;
|
||||
if (mutex_get_waiters(mutex) != 0) {
|
||||
|
||||
mutex_signal_object(mutex);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue