1/***************************************************************************** 2 3Copyright (c) 2010, 2013, Oracle and/or its affiliates. All Rights Reserved. 4 5This program is free software; you can redistribute it and/or modify it under 6the terms of the GNU General Public License as published by the Free Software 7Foundation; version 2 of the License. 8 9This program is distributed in the hope that it will be useful, but WITHOUT 10ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 11FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 12 13You should have received a copy of the GNU General Public License along with 14this program; if not, write to the Free Software Foundation, Inc., 1551 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA 16 17*****************************************************************************/ 18 19/*******************************************************************//** 20@file include/srv0mon.ic 21Server monitoring system 22 23Created 1/20/2010 Jimmy Yang 24************************************************************************/ 25 26/*************************************************************//** 27This function is used to calculate the maximum counter value 28since the start of monitor counter 29@return max counter value since start. */ 30UNIV_INLINE 31mon_type_t 32srv_mon_calc_max_since_start( 33/*=========================*/ 34 monitor_id_t monitor) /*!< in: monitor id */ 35{ 36 if (MONITOR_MAX_VALUE_START(monitor) == MAX_RESERVED) { 37 38 /* MONITOR_MAX_VALUE_START has not yet been 39 initialized, the max value since start is the 40 max count in MONITOR_MAX_VALUE */ 41 MONITOR_MAX_VALUE_START(monitor) = 42 MONITOR_MAX_VALUE(monitor); 43 44 } else if (MONITOR_MAX_VALUE(monitor) != MAX_RESERVED 45 && (MONITOR_MAX_VALUE(monitor) 46 + MONITOR_VALUE_RESET(monitor) 47 > MONITOR_MAX_VALUE_START(monitor))) { 48 49 /* If the max value since reset (as specified 50 in MONITOR_MAX_VALUE) plus the reset value is 51 larger than MONITOR_MAX_VALUE_START, reset 52 MONITOR_MAX_VALUE_START to this new max value */ 53 MONITOR_MAX_VALUE_START(monitor) = 54 MONITOR_MAX_VALUE(monitor) 55 + MONITOR_VALUE_RESET(monitor); 56 } 57 58 return(MONITOR_MAX_VALUE_START(monitor)); 59} 60 61/*************************************************************//** 62This function is used to calculate the minimum counter value 63since the start of monitor counter 64@return min counter value since start. */ 65UNIV_INLINE 66mon_type_t 67srv_mon_calc_min_since_start( 68/*=========================*/ 69 monitor_id_t monitor) /*!< in: monitor id */ 70{ 71 if (MONITOR_MIN_VALUE_START(monitor) == MIN_RESERVED) { 72 73 /* MONITOR_MIN_VALUE_START has not yet been 74 initialized, the min value since start is the 75 min count in MONITOR_MIN_VALUE */ 76 MONITOR_MIN_VALUE_START(monitor) = 77 MONITOR_MIN_VALUE(monitor); 78 79 } else if (MONITOR_MIN_VALUE(monitor) != MIN_RESERVED 80 && (MONITOR_MIN_VALUE(monitor) 81 + MONITOR_VALUE_RESET(monitor) 82 < MONITOR_MIN_VALUE_START(monitor))) { 83 84 /* If the min value since reset (as specified 85 in MONITOR_MIN_VALUE) plus the reset value is 86 less than MONITOR_MIN_VALUE_START, reset 87 MONITOR_MIN_VALUE_START to this new min value */ 88 MONITOR_MIN_VALUE_START(monitor) = 89 MONITOR_MIN_VALUE(monitor) 90 + MONITOR_VALUE_RESET(monitor); 91 } 92 93 return(MONITOR_MIN_VALUE_START(monitor)); 94} 95 96/*************************************************************//** 97This function resets all values of a monitor counter */ 98UNIV_INLINE 99void 100srv_mon_reset_all( 101/*==============*/ 102 monitor_id_t monitor) /*!< in: monitor id */ 103{ 104 /* Do not reset all counter values if monitor is still on. */ 105 if (MONITOR_IS_ON(monitor)) { 106 fprintf(stderr, "InnoDB: Cannot reset all values for" 107 " monitor counter %s while it is on. Please" 108 " turn it off and retry.\n", 109 srv_mon_get_name(monitor)); 110 } else { 111 MONITOR_RESET_ALL(monitor); 112 } 113} 114