mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			185 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (c) 2008, 2023, Oracle and/or its affiliates.
 | |
| 
 | |
|   This program is free software; you can redistribute it and/or modify
 | |
|   it under the terms of the GNU General Public License, version 2.0,
 | |
|   as published by the Free Software Foundation.
 | |
| 
 | |
|   This program is also distributed with certain software (including
 | |
|   but not limited to OpenSSL) that is licensed under separate terms,
 | |
|   as designated in a particular file or component or in included license
 | |
|   documentation.  The authors of MySQL hereby grant you an additional
 | |
|   permission to link the program and your derivative works with the
 | |
|   separately licensed software that they have included with MySQL.
 | |
| 
 | |
|   Without limiting anything contained in the foregoing, this file,
 | |
|   which is part of C Driver for MySQL (Connector/C), is also subject to the
 | |
|   Universal FOSS Exception, version 1.0, a copy of which can be found at
 | |
|   http://oss.oracle.com/licenses/universal-foss-exception.
 | |
| 
 | |
|   This program is distributed in the hope that it will be useful,
 | |
|   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|   GNU General Public License, version 2.0, for more details.
 | |
| 
 | |
|   You should have received a copy of the GNU General Public License
 | |
|   along with this program; if not, write to the Free Software Foundation,
 | |
|   51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
 | |
| 
 | |
| #ifndef MYSQL_PSI_BASE_H
 | |
| #define MYSQL_PSI_BASE_H
 | |
| 
 | |
| #ifdef EMBEDDED_LIBRARY
 | |
| #define DISABLE_ALL_PSI
 | |
| #endif /* EMBEDDED_LIBRARY */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|   @file mysql/psi/psi_base.h
 | |
|   Performance schema instrumentation interface.
 | |
| 
 | |
|   @defgroup Instrumentation_interface Instrumentation Interface
 | |
|   @ingroup Performance_schema
 | |
|   @{
 | |
| */
 | |
| 
 | |
| #define PSI_INSTRUMENT_ME 0
 | |
| #define PSI_INSTRUMENT_MEM ((PSI_memory_key)0)
 | |
| 
 | |
| #define PSI_NOT_INSTRUMENTED 0
 | |
| 
 | |
| /**
 | |
|   Global flag.
 | |
|   This flag indicate that an instrumentation point is a global variable,
 | |
|   or a singleton.
 | |
| */
 | |
| #define PSI_FLAG_GLOBAL (1 << 0)
 | |
| 
 | |
| /**
 | |
|   Mutable flag.
 | |
|   This flag indicate that an instrumentation point is a general placeholder,
 | |
|   that can mutate into a more specific instrumentation point.
 | |
| */
 | |
| #define PSI_FLAG_MUTABLE (1 << 1)
 | |
| 
 | |
| #define PSI_FLAG_THREAD (1 << 2)
 | |
| 
 | |
| /**
 | |
|   Stage progress flag.
 | |
|   This flag apply to the stage instruments only.
 | |
|   It indicates the instrumentation provides progress data.
 | |
| */
 | |
| #define PSI_FLAG_STAGE_PROGRESS (1 << 3)
 | |
| 
 | |
| /**
 | |
|   Shared Exclusive flag.
 | |
|   Indicates that rwlock support the shared exclusive state.
 | |
| */
 | |
| #define PSI_RWLOCK_FLAG_SX (1 << 4)
 | |
| 
 | |
| /**
 | |
|   Transferable flag.
 | |
|   This flag indicate that an instrumented object can
 | |
|   be created by a thread and destroyed by another thread.
 | |
| */
 | |
| #define PSI_FLAG_TRANSFER (1 << 5)
 | |
| 
 | |
| /**
 | |
|   Volatility flag.
 | |
|   This flag indicate that an instrumented object
 | |
|   has a volatility (life cycle) comparable
 | |
|   to the volatility of a session.
 | |
| */
 | |
| #define PSI_FLAG_VOLATILITY_SESSION (1 << 6)
 | |
| 
 | |
| /**
 | |
|   System thread flag.
 | |
|   Indicates that the instrumented object exists on a system thread.
 | |
| */
 | |
| #define PSI_FLAG_THREAD_SYSTEM (1 << 9)
 | |
| 
 | |
| #ifdef HAVE_PSI_INTERFACE
 | |
| 
 | |
| /**
 | |
|   @def PSI_VERSION_1
 | |
|   Performance Schema Interface number for version 1.
 | |
|   This version is supported.
 | |
| */
 | |
| #define PSI_VERSION_1 1
 | |
| 
 | |
| /**
 | |
|   @def PSI_VERSION_2
 | |
|   Performance Schema Interface number for version 2.
 | |
|   This version is not implemented, it's a placeholder.
 | |
| */
 | |
| #define PSI_VERSION_2 2
 | |
| 
 | |
| /**
 | |
|   @def PSI_CURRENT_VERSION
 | |
|   Performance Schema Interface number for the most recent version.
 | |
|   The most current version is @c PSI_VERSION_1
 | |
| */
 | |
| #define PSI_CURRENT_VERSION 1
 | |
| 
 | |
| /**
 | |
|   @def USE_PSI_1
 | |
|   Define USE_PSI_1 to use the interface version 1.
 | |
| */
 | |
| 
 | |
| /**
 | |
|   @def USE_PSI_2
 | |
|   Define USE_PSI_2 to use the interface version 2.
 | |
| */
 | |
| 
 | |
| /**
 | |
|   @def HAVE_PSI_1
 | |
|   Define HAVE_PSI_1 if the interface version 1 needs to be compiled in.
 | |
| */
 | |
| 
 | |
| /**
 | |
|   @def HAVE_PSI_2
 | |
|   Define HAVE_PSI_2 if the interface version 2 needs to be compiled in.
 | |
| */
 | |
| 
 | |
| #ifndef USE_PSI_2
 | |
| #ifndef USE_PSI_1
 | |
| #define USE_PSI_1
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #ifdef USE_PSI_1
 | |
| #define HAVE_PSI_1
 | |
| #endif
 | |
| 
 | |
| #ifdef USE_PSI_2
 | |
| #define HAVE_PSI_2
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|   Allow to override PSI_XXX_CALL at compile time
 | |
|   with more efficient implementations, if available.
 | |
|   If nothing better is available,
 | |
|   make a dynamic call using the PSI_server function pointer.
 | |
| */
 | |
| 
 | |
| #define PSI_DYNAMIC_CALL(M) PSI_server->M
 | |
| 
 | |
| #endif /* HAVE_PSI_INTERFACE */
 | |
| 
 | |
| /** @} */
 | |
| 
 | |
| /**
 | |
|   Instrumented memory key.
 | |
|   To instrument memory, a memory key must be obtained using @c register_memory.
 | |
|   Using a zero key always disable the instrumentation.
 | |
| */
 | |
| typedef unsigned int PSI_memory_key;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* MYSQL_PSI_BASE_H */
 | |
| 
 | 
