summaryrefslogtreecommitdiff
path: root/storage/innobase/include/ut0timer.ic
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@skysql.com>2014-08-06 15:28:58 +0300
committerJan Lindström <jan.lindstrom@skysql.com>2014-08-06 15:28:58 +0300
commit6dad23f04aa5c8a022193cc74b62652a3c1e3057 (patch)
tree85141ad578749597ba997677bb56d3deddd17b4d /storage/innobase/include/ut0timer.ic
parente974b564389af8251c2ba51060e6129e45431586 (diff)
downloadmariadb-git-6dad23f04aa5c8a022193cc74b62652a3c1e3057.tar.gz
MDEV-5834: Merge Kakao Defragmentation implementation to MariaDB 10.1
Merge https://github.com/kakao/mariadb-10.0 that contains Facebook's implementation for defragmentation facebook/mysql-5.6@a2d3a74 facebook/mysql-5.6@def96c8 facebook/mysql-5.6@9c67c5d facebook/mysql-5.6@921a81b facebook/mysql-5.6@aa519bd facebook/mysql-5.6@fea7d13 facebook/mysql-5.6@09b29d3 facebook/mysql-5.6@9284abb facebook/mysql-5.6@dbd623d facebook/mysql-5.6@aed55dc facebook/mysql-5.6@aad5c82 This version does not add new SQL-syntax and new handler API function. Instead optimize table is mapped to defragment table if innodb_defragment=ON, by default the feature is off. Contains changes authored by Sunguck Lee (Kakao).
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;
+}