1/* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
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 as published by
5 the Free Software Foundation; version 2 of the License.
6
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
11
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software Foundation,
14 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
15
16#ifndef TABLE_PERFORMANCE_TIMERS_H
17#define TABLE_PERFORMANCE_TIMERS_H
18
19/**
20 @file storage/perfschema/table_performance_timers.h
21 Table PERFORMANCE_TIMERS (declarations).
22*/
23
24#include <my_rdtsc.h>
25#include "pfs_column_types.h"
26#include "pfs_engine_table.h"
27
28/**
29 @addtogroup Performance_schema_tables
30 @{
31*/
32
33/** A row of PERFORMANCE_SCHEMA.PERFORMANCE_TIMERS. */
34struct row_performance_timers
35{
36 /** Column TIMER_NAME. */
37 enum_timer_name m_timer_name;
38 /**
39 Columns ROUTINE (not displayed), TIMER_OVERHEAD,
40 TIMER_FREQUENCY, TIMER_RESOLUTION.
41 */
42 struct my_timer_unit_info m_info;
43};
44
45/** Table PERFORMANCE_SCHEMA.PERFORMANCE_TIMERS. */
46class table_performance_timers : public PFS_engine_table
47{
48public:
49 /** Table share. */
50 static PFS_engine_table_share m_share;
51 static PFS_engine_table* create();
52
53 virtual int rnd_next();
54 virtual int rnd_pos(const void *pos);
55 virtual void reset_position(void);
56
57protected:
58 virtual int read_row_values(TABLE *table,
59 unsigned char *buf,
60 Field **fields,
61 bool read_all);
62
63protected:
64 table_performance_timers();
65
66public:
67 ~table_performance_timers()
68 {}
69
70private:
71 /** Table share lock. */
72 static THR_LOCK m_table_lock;
73
74 /** Current row. */
75 row_performance_timers *m_row;
76 /** Current position. */
77 PFS_simple_index m_pos;
78 /** Next position. */
79 PFS_simple_index m_next_pos;
80 row_performance_timers m_data[COUNT_TIMER_NAME];
81};
82
83/** @} */
84#endif
85