MySQL  8.0.27
Source Code Documentation
psi_thread.h
Go to the documentation of this file.
1 /* Copyright (c) 2008, 2021, Oracle and/or its affiliates.
2 
3  This program is free software; you can redistribute it and/or modify
4  it under the terms of the GNU General Public License, version 2.0,
5  as published by the Free Software Foundation.
6 
7  This program is also distributed with certain software (including
8  but not limited to OpenSSL) that is licensed under separate terms,
9  as designated in a particular file or component or in included license
10  documentation. The authors of MySQL hereby grant you an additional
11  permission to link the program and your derivative works with the
12  separately licensed software that they have included with MySQL.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License, version 2.0, for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22 
23 #ifndef MYSQL_PSI_THREAD_H
24 #define MYSQL_PSI_THREAD_H
25 
26 /**
27  @file include/mysql/psi/psi_thread.h
28  Performance schema instrumentation interface.
29 
30  @defgroup psi_abi_thread Thread Instrumentation (ABI)
31  @ingroup psi_abi
32  @{
33 */
34 
35 #include "my_inttypes.h"
36 #include "my_macros.h"
37 
38 /* HAVE_PSI_*_INTERFACE */
39 #include "my_psi_config.h" // IWYU pragma: keep
40 
41 #include "my_sharedlib.h"
43 
44 /**
45  @def PSI_THREAD_VERSION_1
46  Performance Schema Thread Interface number for version 1.
47  This version is obsolete.
48 */
49 #define PSI_THREAD_VERSION_1 1
50 
51 /**
52  @def PSI_THREAD_VERSION_2
53  Performance Schema Thread Interface number for version 2.
54  This version is obsolete.
55 */
56 #define PSI_THREAD_VERSION_2 2
57 
58 /**
59  @def PSI_THREAD_VERSION_3
60  Performance Schema Thread Interface number for version 3.
61  This version is obsolete.
62 */
63 #define PSI_THREAD_VERSION_3 3
64 
65 /**
66  @def PSI_THREAD_VERSION_4
67  Performance Schema Thread Interface number for version 4.
68  This version is supported.
69 */
70 #define PSI_THREAD_VERSION_4 4
71 
72 /**
73  @def PSI_THREAD_VERSION_5
74  Performance Schema Thread Interface number for version 5.
75  This version is supported.
76 */
77 #define PSI_THREAD_VERSION_5 5
78 
79 /**
80  @def PSI_CURRENT_THREAD_VERSION
81  Performance Schema Thread Interface number for the most recent version.
82  The most current version is @c PSI_THREAD_VERSION_5
83 */
84 #define PSI_CURRENT_THREAD_VERSION 5
85 
86 /** Entry point for the performance schema interface. */
88  /**
89  ABI interface finder.
90  Calling this method with an interface version number returns either
91  an instance of the ABI for this version, or NULL.
92  @sa PSI_THREAD_VERSION_1
93  @sa PSI_THREAD_VERSION_2
94  @sa PSI_THREAD_VERSION_3
95  @sa PSI_THREAD_VERSION_4
96  @sa PSI_THREAD_VERSION_5
97  @sa PSI_CURRENT_THREAD_VERSION
98  */
99  void *(*get_interface)(int version);
100 };
102 
103 #ifdef HAVE_PSI_THREAD_INTERFACE
104 
105 /**
106  Performance Schema Thread Interface, version 4.
107  @since PSI_THREAD_VERSION_4
108 */
110  /** @sa register_thread_v1_t. */
112  /** @sa spawn_thread_v1_t. */
114  /** @sa new_thread_v1_t. */
116  /** @sa set_thread_id_v1_t. */
118  /** @sa get_current_thread_internal_id_v2_t. */
120  /** @sa get_thread_internal_id_v2_t. */
122  /** @sa get_thread_by_id_v2_t. */
124  /** @sa set_thread_THD_v1_t. */
126  /** @sa set_thread_os_id_v1_t. */
128  /** @sa get_thread_v1_t. */
130  /** @sa set_thread_user_v1_t. */
132  /** @sa set_thread_account_v1_t. */
134  /** @sa set_thread_db_v1_t. */
136  /** @sa set_thread_command_v1_t. */
138  /** @sa set_connection_type_v1_t. */
140  /** @sa set_thread_start_time_v1_t. */
142  /** @sa set_thread_info_v1_t. */
144  /** @sa set_thread_resource_group_v1_t. */
146  /** @sa set_thread_resource_group_by_id_v1_t. */
148  /** @sa set_thread_v1_t. */
150  /** @sa set_thread_peer_port_vc_t. */
152  /** @sa aggregate_thread_status_v1_t. */
154  /** @sa delete_current_thread_v1_t. */
156  /** @sa delete_thread_v1_t. */
158  /** @sa set_thread_connect_attrs_v1_t. */
160  /** @sa get_current_thread_event_id_v2_t. */
162  /** @sa get_thread_event_id_v2_t. */
164  /** @sa get_thread_system_attrs_v1_t. */
166  /** @sa get_thread_system_attrs_by_id_v1_t. */
168  /** @sa register_notification_v1_t. */
170  /** @sa unregister_notification_v1_t. */
172  /** @sa notify_session_connect_v1_t. */
174  /** @sa notify_session_disconnect_v1_t. */
176  /** @sa notify_session_change_user_v1_t. */
178 };
179 
180 /**
181  Performance Schema Thread Interface, version 5.
182  @since PSI_THREAD_VERSION_5
183  Changes from version 4:
184  - register_thread takes an expanded PSI_thread_info_v5 instrumentation,
185  which includes a new m_os_name attribute.
186  - spawn_thread takes an extra sequence number parameter
187  - new_thread takes an extra sequence number parameter
188 */
190  /** @sa register_thread_v5_t. */
192  /** @sa spawn_thread_v5_t. */
194  /** @sa new_thread_v5_t. */
196  /** @sa set_thread_id_v1_t. */
198  /** @sa get_current_thread_internal_id_v2_t. */
200  /** @sa get_thread_internal_id_v2_t. */
202  /** @sa get_thread_by_id_v2_t. */
204  /** @sa set_thread_THD_v1_t. */
206  /** @sa set_thread_os_id_v1_t. */
208  /** @sa get_thread_v1_t. */
210  /** @sa set_thread_user_v1_t. */
212  /** @sa set_thread_account_v1_t. */
214  /** @sa set_thread_db_v1_t. */
216  /** @sa set_thread_command_v1_t. */
218  /** @sa set_connection_type_v1_t. */
220  /** @sa set_thread_start_time_v1_t. */
222  /** @sa set_thread_info_v1_t. */
224  /** @sa set_thread_resource_group_v1_t. */
226  /** @sa set_thread_resource_group_by_id_v1_t. */
228  /** @sa set_thread_v1_t. */
230  /** @sa set_thread_peer_port_vc_t. */
232  /** @sa aggregate_thread_status_v1_t. */
234  /** @sa delete_current_thread_v1_t. */
236  /** @sa delete_thread_v1_t. */
238  /** @sa set_thread_connect_attrs_v1_t. */
240  /** @sa get_current_thread_event_id_v2_t. */
242  /** @sa get_thread_event_id_v2_t. */
244  /** @sa get_thread_system_attrs_v1_t. */
246  /** @sa get_thread_system_attrs_by_id_v1_t. */
248  /** @sa register_notification_v1_t. */
250  /** @sa unregister_notification_v1_t. */
252  /** @sa notify_session_connect_v1_t. */
254  /** @sa notify_session_disconnect_v1_t. */
256  /** @sa notify_session_change_user_v1_t. */
258 };
259 
261 
263 
264 #endif /* HAVE_PSI_THREAD_INTERFACE */
265 
266 /** @} (end of group psi_abi_thread) */
267 
268 #endif /* MYSQL_PSI_THREAD_H */
unsigned long long(* get_thread_internal_id_v2_t)(struct PSI_thread *thread)
Read the THREAD_ID of an instrumented thread.
Definition: psi_thread_bits.h:275
struct PSI_thread *(* new_thread_v1_t)(PSI_thread_key key, const void *identity, unsigned long long thread_id)
Create instrumentation for a thread.
Definition: psi_thread_bits.h:241
struct PSI_thread *(* get_thread_by_id_v2_t)(unsigned long long processlist_id)
Get the instrumentation for the thread of given PROCESSLIST_ID.
Definition: psi_thread_bits.h:283
int(* spawn_thread_v1_t)(PSI_thread_key key, my_thread_handle *thread, const my_thread_attr_t *attr, void *(*start_routine)(void *), void *arg)
Spawn a thread.
Definition: psi_thread_bits.h:225
void(* get_current_thread_event_id_v2_t)(unsigned long long *thread_internal_id, unsigned long long *event_id)
Get the current thread current event.
Definition: psi_thread_bits.h:432
void(* set_thread_THD_v1_t)(struct PSI_thread *thread, THD *thd)
Assign a THD to an instrumented thread.
Definition: psi_thread_bits.h:255
void(* set_thread_os_id_v1_t)(struct PSI_thread *thread)
Assign the current operating system thread id to an instrumented thread.
Definition: psi_thread_bits.h:291
void(* set_thread_id_v1_t)(struct PSI_thread *thread, unsigned long long id)
Assign an id to an instrumented thread.
Definition: psi_thread_bits.h:262
void(* notify_session_change_user_v1_t)(PSI_thread *thread)
Invoke the callback function registered for a changer user event.
Definition: psi_thread_bits.h:587
void(* set_thread_start_time_v1_t)(time_t start_time)
Assign a start time to the instrumented thread.
Definition: psi_thread_bits.h:342
void(* notify_session_disconnect_v1_t)(PSI_thread *thread)
Invoke the callback function registered for a session disconnect event.
Definition: psi_thread_bits.h:580
void(* set_thread_command_v1_t)(int command)
Assign a current command to the instrumented thread.
Definition: psi_thread_bits.h:330
int(* spawn_thread_v5_t)(PSI_thread_key key, PSI_thread_seqnum seqnum, my_thread_handle *thread, const my_thread_attr_t *attr, void *(*start_routine)(void *), void *arg)
Definition: psi_thread_bits.h:229
void(* set_thread_info_v1_t)(const char *info, unsigned int info_len)
Assign a process info to the instrumented thread.
Definition: psi_thread_bits.h:355
void(* delete_current_thread_v1_t)(void)
Delete the current thread instrumentation.
Definition: psi_thread_bits.h:408
void(* register_thread_v1_t)(const char *category, struct PSI_thread_info_v1 *info, int count)
Thread registration API.
Definition: psi_thread_bits.h:202
void(* set_thread_account_v1_t)(const char *user, int user_len, const char *host, int host_len)
Assign a user name and host name to the instrumented thread.
Definition: psi_thread_bits.h:316
int(* register_notification_v3_t)(const PSI_notification_v3 *callbacks, bool with_ref_count)
Register callback functions for the Notification service.
Definition: psi_thread_bits.h:556
void(* notify_session_connect_v1_t)(PSI_thread *thread)
Invoke the callback function registered for a session connect event.
Definition: psi_thread_bits.h:573
int(* set_thread_resource_group_v1_t)(const char *group_name, int group_name_len, void *user_data)
Assign a resource group name to the current thread.
Definition: psi_thread_bits.h:365
void(* set_thread_user_v1_t)(const char *user, int user_len)
Assign a user name to the instrumented thread.
Definition: psi_thread_bits.h:307
void(* register_thread_v5_t)(const char *category, struct PSI_thread_info_v5 *info, int count)
Thread registration API.
Definition: psi_thread_bits.h:212
void(* aggregate_thread_status_v2_t)(struct PSI_thread *thread)
Aggregate the thread status variables.
Definition: psi_thread_bits.h:405
int(* unregister_notification_v1_t)(int handle)
Unregister callback functions for the Notification service.
Definition: psi_thread_bits.h:566
void(* delete_thread_v1_t)(struct PSI_thread *thread)
Delete a thread instrumentation.
Definition: psi_thread_bits.h:411
void(* set_thread_db_v1_t)(const char *db, int db_len)
Assign a current database to the instrumented thread.
Definition: psi_thread_bits.h:324
void(* set_thread_v1_t)(struct PSI_thread *thread)
Attach a thread instrumentation to the running thread.
Definition: psi_thread_bits.h:393
unsigned long long(* get_current_thread_internal_id_v2_t)()
Read the THREAD_ID of the current thread.
Definition: psi_thread_bits.h:268
int(* get_thread_system_attrs_v3_t)(PSI_thread_attrs_v3 *thread_attrs)
Get system attributes for the current thread.
Definition: psi_thread_bits.h:532
void(* set_thread_peer_port_v4_t)(PSI_thread *thread, unsigned int port)
Assign the remote (peer) port to the instrumented thread.
Definition: psi_thread_bits.h:401
int(* set_thread_connect_attrs_v1_t)(const char *buffer, unsigned int length, const void *from_cs)
Stores an array of connection attributes.
Definition: psi_thread_bits.h:423
MYSQL_PLUGIN_IMPORT PSI_thread_service_t * psi_thread_service
Definition: psi_noop.cc:230
int(* get_thread_system_attrs_by_id_v3_t)(PSI_thread *thread, unsigned long long thread_id, PSI_thread_attrs_v3 *thread_attrs)
Get system attributes for an instrumented thread, identified either by the thread instrumentation or ...
Definition: psi_thread_bits.h:543
int(* set_thread_resource_group_by_id_v1_t)(PSI_thread *thread, unsigned long long thread_id, const char *group_name, int group_name_len, void *user_data)
Assign a resource group name to an instrumented thread, identified either by the thread instrumentati...
Definition: psi_thread_bits.h:380
void(* set_connection_type_v1_t)(opaque_vio_type conn_type)
Assign a connection type to the instrumented thread.
Definition: psi_thread_bits.h:336
struct PSI_thread *(* get_thread_v1_t)(void)
Get the instrumentation for the running thread.
Definition: psi_thread_bits.h:300
void(* get_thread_event_id_v2_t)(struct PSI_thread *psi, unsigned long long *thread_internal_id, unsigned long long *event_id)
Get the thread current event.
Definition: psi_thread_bits.h:450
struct PSI_thread *(* new_thread_v5_t)(PSI_thread_key key, PSI_thread_seqnum seqnum, const void *identity, unsigned long long thread_id)
Definition: psi_thread_bits.h:245
Some integer typedefs for easier portability.
Some common macros.
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
Functions related to handling of plugins and other dynamically loaded libraries.
#define MYSQL_PLUGIN_IMPORT
Definition: my_sharedlib.h:70
Performance schema instrumentation interface.
required uint64 version
Definition: replication_group_member_actions.proto:40
Entry point for the performance schema interface.
Definition: psi_thread.h:87
Performance Schema Thread Interface, version 4.
Definition: psi_thread.h:109
set_thread_os_id_v1_t set_thread_os_id
Definition: psi_thread.h:127
get_thread_v1_t get_thread
Definition: psi_thread.h:129
delete_current_thread_v1_t delete_current_thread
Definition: psi_thread.h:155
spawn_thread_v1_t spawn_thread
Definition: psi_thread.h:113
register_notification_v3_t register_notification
Definition: psi_thread.h:169
set_thread_v1_t set_thread
Definition: psi_thread.h:149
set_thread_peer_port_v4_t set_thread_peer_port
Definition: psi_thread.h:151
set_thread_db_v1_t set_thread_db
Definition: psi_thread.h:135
unregister_notification_v1_t unregister_notification
Definition: psi_thread.h:171
get_current_thread_event_id_v2_t get_current_thread_event_id
Definition: psi_thread.h:161
get_thread_internal_id_v2_t get_thread_internal_id
Definition: psi_thread.h:121
set_thread_command_v1_t set_thread_command
Definition: psi_thread.h:137
set_thread_user_v1_t set_thread_user
Definition: psi_thread.h:131
set_thread_info_v1_t set_thread_info
Definition: psi_thread.h:143
set_thread_resource_group_by_id_v1_t set_thread_resource_group_by_id
Definition: psi_thread.h:147
set_thread_connect_attrs_v1_t set_thread_connect_attrs
Definition: psi_thread.h:159
set_thread_start_time_v1_t set_thread_start_time
Definition: psi_thread.h:141
get_thread_system_attrs_v3_t get_thread_system_attrs
Definition: psi_thread.h:165
set_thread_THD_v1_t set_thread_THD
Definition: psi_thread.h:125
set_connection_type_v1_t set_connection_type
Definition: psi_thread.h:139
get_thread_event_id_v2_t get_thread_event_id
Definition: psi_thread.h:163
notify_session_change_user_v1_t notify_session_change_user
Definition: psi_thread.h:177
set_thread_resource_group_v1_t set_thread_resource_group
Definition: psi_thread.h:145
delete_thread_v1_t delete_thread
Definition: psi_thread.h:157
register_thread_v1_t register_thread
Definition: psi_thread.h:111
aggregate_thread_status_v2_t aggregate_thread_status
Definition: psi_thread.h:153
get_current_thread_internal_id_v2_t get_current_thread_internal_id
Definition: psi_thread.h:119
set_thread_account_v1_t set_thread_account
Definition: psi_thread.h:133
notify_session_connect_v1_t notify_session_connect
Definition: psi_thread.h:173
notify_session_disconnect_v1_t notify_session_disconnect
Definition: psi_thread.h:175
get_thread_by_id_v2_t get_thread_by_id
Definition: psi_thread.h:123
new_thread_v1_t new_thread
Definition: psi_thread.h:115
set_thread_id_v1_t set_thread_id
Definition: psi_thread.h:117
get_thread_system_attrs_by_id_v3_t get_thread_system_attrs_by_id
Definition: psi_thread.h:167
Performance Schema Thread Interface, version 5.
Definition: psi_thread.h:189
register_notification_v3_t register_notification
Definition: psi_thread.h:249
aggregate_thread_status_v2_t aggregate_thread_status
Definition: psi_thread.h:233
spawn_thread_v5_t spawn_thread
Definition: psi_thread.h:193
get_thread_system_attrs_by_id_v3_t get_thread_system_attrs_by_id
Definition: psi_thread.h:247
set_thread_start_time_v1_t set_thread_start_time
Definition: psi_thread.h:221
get_thread_system_attrs_v3_t get_thread_system_attrs
Definition: psi_thread.h:245
set_thread_id_v1_t set_thread_id
Definition: psi_thread.h:197
set_thread_resource_group_by_id_v1_t set_thread_resource_group_by_id
Definition: psi_thread.h:227
register_thread_v5_t register_thread
Definition: psi_thread.h:191
unregister_notification_v1_t unregister_notification
Definition: psi_thread.h:251
set_thread_account_v1_t set_thread_account
Definition: psi_thread.h:213
set_connection_type_v1_t set_connection_type
Definition: psi_thread.h:219
set_thread_THD_v1_t set_thread_THD
Definition: psi_thread.h:205
set_thread_user_v1_t set_thread_user
Definition: psi_thread.h:211
set_thread_v1_t set_thread
Definition: psi_thread.h:229
get_thread_internal_id_v2_t get_thread_internal_id
Definition: psi_thread.h:201
notify_session_connect_v1_t notify_session_connect
Definition: psi_thread.h:253
notify_session_change_user_v1_t notify_session_change_user
Definition: psi_thread.h:257
delete_thread_v1_t delete_thread
Definition: psi_thread.h:237
get_thread_event_id_v2_t get_thread_event_id
Definition: psi_thread.h:243
get_current_thread_internal_id_v2_t get_current_thread_internal_id
Definition: psi_thread.h:199
get_thread_by_id_v2_t get_thread_by_id
Definition: psi_thread.h:203
notify_session_disconnect_v1_t notify_session_disconnect
Definition: psi_thread.h:255
get_thread_v1_t get_thread
Definition: psi_thread.h:209
set_thread_command_v1_t set_thread_command
Definition: psi_thread.h:217
set_thread_db_v1_t set_thread_db
Definition: psi_thread.h:215
set_thread_os_id_v1_t set_thread_os_id
Definition: psi_thread.h:207
get_current_thread_event_id_v2_t get_current_thread_event_id
Definition: psi_thread.h:241
set_thread_info_v1_t set_thread_info
Definition: psi_thread.h:223
new_thread_v5_t new_thread
Definition: psi_thread.h:195
set_thread_peer_port_v4_t set_thread_peer_port
Definition: psi_thread.h:231
delete_current_thread_v1_t delete_current_thread
Definition: psi_thread.h:235
set_thread_resource_group_v1_t set_thread_resource_group
Definition: psi_thread.h:225
set_thread_connect_attrs_v1_t set_thread_connect_attrs
Definition: psi_thread.h:239