66#if defined(MYSQL_SERVER) || defined(PFS_DIRECT_CALL)
72#define PSI_MUTEX_CALL(M) psi_mutex_service->M
99#ifndef DISABLE_MYSQL_THREAD_H
108#define mysql_mutex_assert_owner(M) \
109 safe_mutex_assert_owner((M)->m_mutex.m_u.m_safe_ptr);
111#define mysql_mutex_assert_owner(M) \
122#define mysql_mutex_assert_not_owner(M) \
123 safe_mutex_assert_not_owner((M)->m_mutex.m_u.m_safe_ptr);
125#define mysql_mutex_assert_not_owner(M) \
133#define mysql_mutex_register(P1, P2, P3) inline_mysql_mutex_register(P1, P2, P3)
144#define mysql_mutex_init(K, M, A) \
145 mysql_mutex_init_with_src(K, M, A, __FILE__, __LINE__)
147#define mysql_mutex_init_with_src(K, M, A, F, L) \
148 inline_mysql_mutex_init(K, M, A, F, L)
156#define mysql_mutex_destroy(M) \
157 mysql_mutex_destroy_with_src(M, __FILE__, __LINE__)
159#define mysql_mutex_destroy_with_src(M, F, L) \
160 inline_mysql_mutex_destroy(M, F, L)
169#define mysql_mutex_lock(M) mysql_mutex_lock_with_src(M, __FILE__, __LINE__)
171#define mysql_mutex_lock_with_src(M, F, L) inline_mysql_mutex_lock(M, F, L)
180#define mysql_mutex_trylock(M) \
181 mysql_mutex_trylock_with_src(M, __FILE__, __LINE__)
183#define mysql_mutex_trylock_with_src(M, F, L) \
184 inline_mysql_mutex_trylock(M, F, L)
191#define mysql_mutex_unlock(M) mysql_mutex_unlock_with_src(M, __FILE__, __LINE__)
193#define mysql_mutex_unlock_with_src(M, F, L) inline_mysql_mutex_unlock(M, F, L)
199 int count [[maybe_unused]]) {
200#ifdef HAVE_PSI_MUTEX_INTERFACE
208 const char *src_file [[maybe_unused]],
209 uint src_line [[maybe_unused]]) {
210#ifdef HAVE_PSI_MUTEX_INTERFACE
213 that->
m_psi =
nullptr;
226 uint src_line [[maybe_unused]]) {
227#ifdef HAVE_PSI_MUTEX_INTERFACE
228 if (that->
m_psi !=
nullptr) {
230 that->
m_psi =
nullptr;
242 const char *src_file [[maybe_unused]],
243 uint src_line [[maybe_unused]]) {
246#ifdef HAVE_PSI_MUTEX_INTERFACE
247 if (that->
m_psi !=
nullptr) {
264 if (locker !=
nullptr) {
287 uint src_line [[maybe_unused]]) {
290#ifdef HAVE_PSI_MUTEX_INTERFACE
291 if (that->
m_psi !=
nullptr) {
308 if (locker !=
nullptr) {
331 uint src_line [[maybe_unused]]) {
334#ifdef HAVE_PSI_MUTEX_INTERFACE
335 if (that->
m_psi !=
nullptr) {
#define PSI_MUTEX_CALL(M)
Definition: psi_mutex.h:35
struct PSI_mutex_locker PSI_mutex_locker
Definition: psi_mutex_bits.h:104
unsigned int PSI_mutex_key
Instrumented mutex key.
Definition: psi_mutex_bits.h:51
@ PSI_MUTEX_TRYLOCK
Lock attempt.
Definition: psi_mutex_bits.h:111
@ PSI_MUTEX_LOCK
Lock.
Definition: psi_mutex_bits.h:109
static void inline_mysql_mutex_register(const char *category, PSI_mutex_info *info, int count)
Definition: mysql_mutex.h:195
static int inline_mysql_mutex_destroy(mysql_mutex_t *that, const char *src_file, uint src_line)
Definition: mysql_mutex.h:223
static int inline_mysql_mutex_init(PSI_mutex_key key, mysql_mutex_t *that, const native_mutexattr_t *attr, const char *src_file, uint src_line)
Definition: mysql_mutex.h:205
static int inline_mysql_mutex_unlock(mysql_mutex_t *that, const char *src_file, uint src_line)
Definition: mysql_mutex.h:328
static int inline_mysql_mutex_lock(mysql_mutex_t *that, const char *src_file, uint src_line)
Definition: mysql_mutex.h:241
static int inline_mysql_mutex_trylock(mysql_mutex_t *that, const char *src_file, uint src_line)
Definition: mysql_mutex.h:284
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
static int count
Definition: myisam_ftdump.cc:44
ABI for instrumented mutexes.
native_mutex_t init_mutex
Definition: mysqlimport.cc:58
static const char * category
Definition: sha2_password.cc:169
Performance schema instrumentation (declarations).
struct result result
Definition: result.h:33
Performance schema instrumentation interface.
Instrumentation helpers for mutexes.
required string key
Definition: replication_asynchronous_connection_failover.proto:59
bool m_enabled
Instrumentation is enabled.
Definition: psi_bits.h:180
Mutex information.
Definition: psi_mutex_bits.h:72
State data storage for start_mutex_wait_v1_t.
Definition: psi_mutex_bits.h:124
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:49
struct PSI_mutex * m_psi
The instrumentation hook.
Definition: mysql_mutex_bits.h:57
my_mutex_t m_mutex
The real mutex.
Definition: mysql_mutex_bits.h:51
MySQL mutex implementation.
static int my_mutex_init(my_mutex_t *mp, const native_mutexattr_t *attr)
Definition: thr_mutex.h:164
static int my_mutex_destroy(my_mutex_t *mp)
Definition: thr_mutex.h:224
static int my_mutex_lock(my_mutex_t *mp)
Definition: thr_mutex.h:179
static int my_mutex_trylock(my_mutex_t *mp)
Definition: thr_mutex.h:194
static int my_mutex_unlock(my_mutex_t *mp)
Definition: thr_mutex.h:209
pthread_mutexattr_t native_mutexattr_t
Definition: thr_mutex_bits.h:55