44#define mutex_create(I, M) (void)M
45#define mutex_enter(M) (void)M
46#define mutex_enter_nospin(M) (void)M
47#define mutex_enter_nowait(M) (void)M
48#define mutex_exit(M) (void)M
49#define mutex_free(M) (void)M
52#define mutex_validate(M) (M)
54#define mutex_own(m) ((m) != nullptr)
71#define UT_MUTEX_TYPE(M, P, T) typedef PolicyMutex<M<P>> T;
75#ifdef HAVE_IB_LINUX_FUTEX
89typedef FutexMutex ib_mutex_t;
90typedef BlockFutexMutex ib_bpmutex_t;
91#define MUTEX_TYPE "Uses futexes"
92#elif defined(MUTEX_SYS)
93typedef SysMutex ib_mutex_t;
94typedef BlockSysMutex ib_bpmutex_t;
95#define MUTEX_TYPE "Uses system mutexes"
96#elif defined(MUTEX_EVENT)
97typedef SyncArrayMutex ib_mutex_t;
98typedef BlockSyncArrayMutex ib_bpmutex_t;
99#define MUTEX_TYPE "Uses event mutexes"
101#error "ib_mutex_t type is unknown"
109#define mutex_create(I, M) mutex_init((M), (I), __FILE__, __LINE__)
111template <
typename Mutex>
116#define mutex_enter(M) mutex_enter_inline(M, UT_LOCATION_HERE)
118#define mutex_enter_nospin(M) (M)->enter(0, 0, __FILE__, __LINE__)
120#define mutex_enter_nowait(M) (M)->trylock(__FILE__, __LINE__)
122#define mutex_exit(M) (M)->exit()
124#define mutex_free(M) mutex_destroy(M)
159#define mutex_validate(M) (M)->validate()
164#define mutex_own(M) (M)->is_owned()
167#define mutex_validate(M)
170#include "../meb/mutex.h"
171typedef meb::Mutex ib_mutex_t;
172typedef meb::Mutex ib_bpmutex_t;
196 template <
typename Callback>
200 for (LatchMetaData::iterator it =
latch_meta.begin(); it !=
end; ++it) {
223#ifndef UNIV_HOTBACKUP
234template <
typename Mutex>
246template <
typename Mutex>
254 mutex_create(latch_id,
static_cast<ib_mutex_t *
>(
this));
Track aggregate metrics policy, used by the page mutex.
Definition: sync0policy.h:335
Class that stores callback function reference as well as the result of the callback function call (in...
Definition: keyring_service.cc:42
Definition: ut0mutex.h:251
~IB_mutex()
Definition: ut0mutex.h:256
void unlock()
Definition: ut0mutex.h:260
IB_mutex(latch_id_t latch_id)
Definition: ut0mutex.h:253
void lock(const ut::Location &loc)
Definition: ut0mutex.h:257
Iterate over the mutex meta data.
Definition: ut0mutex.h:176
MutexMonitor()=default
Constructor.
~MutexMonitor()=default
Destructor.
void reset()
Reset the mutex monitoring values.
Definition: sync0sync.cc:271
void disable()
Disable the mutex monitoring.
Definition: sync0sync.cc:257
void enable()
Enable the mutex monitoring.
Definition: sync0sync.cc:243
bool iterate(Callback &callback) const 1
Invoke the callback for each active mutex collection.
Definition: ut0mutex.h:197
#define exit(A)
Definition: lexyy.cc:917
Some integer typedefs for easier portability.
std::string file_name(Log_file_id file_id)
Provides name of the log file with the given file id, e.g.
Definition: log0pre_8_0_30.cc:93
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:191
Macros for using atomics.
Collect the metrics per mutex instance, no aggregation.
Definition: sync0policy.h:218
Definition: ut0mutex.h:127
void clear()
Definition: ut0mutex.h:150
~IB_mutex_guard()
Destructor to release mutex.
Definition: ut0mutex.h:138
IB_mutex_guard & operator=(IB_mutex_guard const &)=delete
Disable assignment.
ib_mutex_t * m_mutex
Current mutex for RAII.
Definition: ut0mutex.h:148
IB_mutex_guard(IB_mutex_guard const &)=delete
Disable copy construction.
IB_mutex_guard(ib_mutex_t *in_mutex, const ut::Location &location)
Constructor to acquire mutex.
Definition: ut0mutex.h:132
OS mutex, without any policy.
Definition: sync0types.h:470
OS mutex for tracking lock/unlock for debugging.
Definition: ib0mutex.h:46
Definition: ib0mutex.h:374
const char * filename
Definition: ut0core.h:33
size_t line
Definition: ut0core.h:34
LatchMetaData latch_meta
Note: This is accessed without any mutex protection.
Definition: sync0debug.cc:1190
latch_id_t
Each latch has an ID.
Definition: sync0types.h:341
#define NULL
Definition: types.h:54
#define UNIV_NOTHROW
Definition: univ.i:455
ulong srv_force_recovery_crash
Inject a crash at different steps of the recovery process.
Definition: srv0srv.cc:538
ulong srv_spin_wait_delay
Definition: ut0mutex.h:106
MutexMonitor * mutex_monitor
Defined in sync0sync.cc.
Definition: sync0sync.cc:183
OSMutex EventMutex
Definition: ut0mutex.h:73
ulong srv_n_spin_wait_rounds
Definition: ut0mutex.h:107
void mutex_destroy(Mutex *mutex)
Removes a mutex instance from the mutex list.
Definition: ut0mutex.h:247
#define UT_MUTEX_TYPE(M, P, T)
Create a typedef using the MutexType<PolicyType>
Definition: ut0mutex.h:71
#define mutex_exit(M)
Definition: ut0mutex.h:122
#define mutex_free(M)
Definition: ut0mutex.h:124
#define mutex_create(I, M)
Definition: ut0mutex.h:109
void mutex_enter_inline(Mutex *m, ut::Location loc)
Definition: ut0mutex.h:112
void mutex_init(Mutex *mutex, latch_id_t id, const char *file_name, uint32_t line)
Creates, or rather, initializes a mutex object in a specified memory location (which must be appropri...
Definition: ut0mutex.h:235
Mutex implementation include file.