summaryrefslogtreecommitdiff
path: root/storage/innobase/include/ut0timer.ic
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/include/ut0timer.ic')
-rw-r--r--storage/innobase/include/ut0timer.ic113
1 files changed, 113 insertions, 0 deletions
diff --git a/storage/innobase/include/ut0timer.ic b/storage/innobase/include/ut0timer.ic
new file mode 100644
index 00000000000..027e89c6279
--- /dev/null
+++ b/storage/innobase/include/ut0timer.ic
@@ -0,0 +1,113 @@
+/*****************************************************************************
+
+Copyright (c) 2013, 2014, Facebook, Inc. All Rights Reserved.
+Copyright (c) 2014, SkySQL Ab. All Rights Reserved.
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; version 2 of the License.
+
+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 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, Inc.,
+51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
+
+*****************************************************************************/
+
+/********************************************************************//**
+@file include/ut0timer.ic
+Timer rountines
+
+Created 30/07/2014 Jan Lindström jan.lindstrom@skysql.com
+modified from https://github.com/facebook/mysql-5.6/commit/c75a413edeb96eb99bf11d7269bdfea06f96d6b6
+*************************************************************************/
+
+/**************************************************************//**
+Return time passed since time then, automatically adjusted
+for the estimated timer overhead.
+@return time passed since "then" */
+UNIV_INLINE
+ulonglong
+ut_timer_since(
+/*===========*/
+ ulonglong then) /*!< in: time where to calculate */
+{
+ return (ut_timer_now() - then) - ut_timer.overhead;
+}
+
+/**************************************************************//**
+Get time passed since "then", and update then to now
+@return time passed sinche "then" */
+UNIV_INLINE
+ulonglong
+ut_timer_since_and_update(
+/*======================*/
+ ulonglong *then) /*!< in: time where to calculate */
+{
+ ulonglong now = ut_timer_now();
+ ulonglong ret = (now - (*then)) - ut_timer.overhead;
+ *then = now;
+ return ret;
+}
+
+/**************************************************************//**
+Convert native timer units in a ulonglong into seconds in a double
+@return time in a seconds */
+UNIV_INLINE
+double
+ut_timer_to_seconds(
+/*=================*/
+ ulonglong when) /*!< in: time where to calculate */
+{
+ double ret = (double)(when);
+ ret /= (double)(ut_timer.frequency);
+ return ret;
+}
+
+/**************************************************************//**
+Convert native timer units in a ulonglong into milliseconds in a double
+@return time in milliseconds */
+UNIV_INLINE
+double
+ut_timer_to_milliseconds(
+/*=====================*/
+ ulonglong when) /*!< in: time where to calculate */
+{
+ double ret = (double)(when);
+ ret *= 1000.0;
+ ret /= (double)(ut_timer.frequency);
+ return ret;
+}
+
+/**************************************************************//**
+Convert native timer units in a ulonglong into microseconds in a double
+@return time in microseconds */
+UNIV_INLINE
+double
+ut_timer_to_microseconds(
+/*=====================*/
+ ulonglong when) /*!< in: time where to calculate */
+{
+ double ret = (double)(when);
+ ret *= 1000000.0;
+ ret /= (double)(ut_timer.frequency);
+ return ret;
+}
+
+/**************************************************************//**
+Convert microseconds in a double to native timer units in a ulonglong
+@return time in microseconds */
+UNIV_INLINE
+ulonglong
+ut_microseconds_to_timer(
+/*=====================*/
+ ulonglong when) /*!< in: time where to calculate */
+{
+ double ret = when;
+ ret *= (double)(ut_timer.frequency);
+ ret /= 1000000.0;
+ return (ulonglong)ret;
+}