MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pfs_timer.h
Go to the documentation of this file.
1 /* Copyright (c) 2008, 2011, 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 PFS_TIMER_H
17 #define PFS_TIMER_H
18 
23 #include <my_rdtsc.h>
24 #include "pfs_column_types.h"
25 
27 #define MICROSEC_TO_PICOSEC 1000000
28 
36 {
42  static time_normalizer* get(enum_timer_name timer_name);
43 
45  ulonglong m_v0;
47  ulonglong m_factor;
48 
54  inline ulonglong wait_to_pico(ulonglong wait)
55  {
56  return wait * m_factor;
57  }
58 
64  inline ulonglong time_to_pico(ulonglong t)
65  {
66  return (t == 0 ? 0 : (t - m_v0) * m_factor);
67  }
68 
77  void to_pico(ulonglong start, ulonglong end,
78  ulonglong *pico_start, ulonglong *pico_end, ulonglong *pico_wait);
79 };
80 
106 
108 void init_timers();
109 
110 extern "C"
111 {
113  typedef ulonglong (*timer_fct_t)(void);
114 }
115 
121 ulonglong get_timer_pico_value(enum_timer_name timer_name);
127 ulonglong get_timer_raw_value(enum_timer_name timer_name);
138 
139 #endif
140