1 | /***************************************************************************** |
2 | |
3 | Copyright (c) 2010, 2013, Oracle and/or its affiliates. All Rights Reserved. |
4 | |
5 | This program is free software; you can redistribute it and/or modify it under |
6 | the terms of the GNU General Public License as published by the Free Software |
7 | Foundation; version 2 of the License. |
8 | |
9 | This program is distributed in the hope that it will be useful, but WITHOUT |
10 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
11 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
12 | |
13 | You should have received a copy of the GNU General Public License along with |
14 | this program; if not, write to the Free Software Foundation, Inc., |
15 | 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA |
16 | |
17 | *****************************************************************************/ |
18 | |
19 | /*******************************************************************//** |
20 | @file include/srv0mon.ic |
21 | Server monitoring system |
22 | |
23 | Created 1/20/2010 Jimmy Yang |
24 | ************************************************************************/ |
25 | |
26 | /*************************************************************//** |
27 | This function is used to calculate the maximum counter value |
28 | since the start of monitor counter |
29 | @return max counter value since start. */ |
30 | UNIV_INLINE |
31 | mon_type_t |
32 | srv_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 | /*************************************************************//** |
62 | This function is used to calculate the minimum counter value |
63 | since the start of monitor counter |
64 | @return min counter value since start. */ |
65 | UNIV_INLINE |
66 | mon_type_t |
67 | srv_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 | /*************************************************************//** |
97 | This function resets all values of a monitor counter */ |
98 | UNIV_INLINE |
99 | void |
100 | srv_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 | |