diff --git a/ft/rollback_log_node_cache.cc b/ft/rollback_log_node_cache.cc index 323795f449a..62bec1fae10 100644 --- a/ft/rollback_log_node_cache.cc +++ b/ft/rollback_log_node_cache.cc @@ -15,7 +15,11 @@ void rollback_log_node_cache::init (uint32_t max_num_avail_nodes) { m_max_num_avail = max_num_avail_nodes; m_first = 0; m_num_avail = 0; - toku_adaptive_mutex_init(&m_mutex); + toku_pthread_mutexattr_t attr; + toku_mutexattr_init(&attr); + toku_mutexattr_settype(&attr, TOKU_MUTEX_ADAPTIVE); + toku_mutex_init(&m_mutex, &attr); + toku_mutexattr_destroy(&attr); } void rollback_log_node_cache::destroy() { diff --git a/locktree/treenode.cc b/locktree/treenode.cc index a9bb88b3258..3115484c8f1 100644 --- a/locktree/treenode.cc +++ b/locktree/treenode.cc @@ -20,7 +20,11 @@ void treenode::init(comparator *cmp) { // use an adaptive mutex at each node since we expect the time the // lock is held to be relatively short compared to a context switch. // indeed, this improves performance at high thread counts considerably. - toku_adaptive_mutex_init(&m_mutex); + toku_pthread_mutexattr_t attr; + toku_mutexattr_init(&attr); + toku_mutexattr_settype(&attr, TOKU_MUTEX_ADAPTIVE); + toku_mutex_init(&m_mutex, &attr); + toku_mutexattr_destroy(&attr); m_left_child.set(nullptr); m_right_child.set(nullptr); } diff --git a/portability/toku_pthread.h b/portability/toku_pthread.h index 1583e6b88b3..21738d32dab 100644 --- a/portability/toku_pthread.h +++ b/portability/toku_pthread.h @@ -86,11 +86,21 @@ toku_mutex_init(toku_mutex_t *mutex, const toku_pthread_mutexattr_t *attr) { } static inline void -toku_adaptive_mutex_init(toku_mutex_t *mutex) { - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP); - toku_mutex_init(mutex, &attr); +toku_mutexattr_init(toku_pthread_mutexattr_t *attr) { + int r = pthread_mutexattr_init(attr); + assert_zero(r); +} + +static inline void +toku_mutexattr_settype(toku_pthread_mutexattr_t *attr, int type) { + int r = pthread_mutexattr_settype(attr, type); + assert_zero(r); +} + +static inline void +toku_mutexattr_destroy(toku_pthread_mutexattr_t *attr) { + int r = pthread_mutexattr_destroy(attr); + assert_zero(r); } static inline void