⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ndbtick.c

📁 mysql-5.0.22.tar.gz源码包
💻 C
字号:
/* Copyright (C) 2003 MySQL AB   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; either version 2 of the License, or   (at your option) any later version.   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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <ndb_global.h>#include "NdbTick.h"#define NANOSEC_PER_SEC  1000000000#define MICROSEC_PER_SEC 1000000#define MILLISEC_PER_SEC 1000#define MICROSEC_PER_MILLISEC 1000#define MILLISEC_PER_NANOSEC 1000000#ifdef HAVE_CLOCK_GETTIMENDB_TICKS NdbTick_CurrentMillisecond(void){  struct timespec tick_time;  clock_gettime(CLOCK_REALTIME, &tick_time);  return     ((NDB_TICKS)tick_time.tv_sec)  * ((NDB_TICKS)MILLISEC_PER_SEC) +    ((NDB_TICKS)tick_time.tv_nsec) / ((NDB_TICKS)MILLISEC_PER_NANOSEC);}int NdbTick_CurrentMicrosecond(NDB_TICKS * secs, Uint32 * micros){  struct timespec t;  int res = clock_gettime(CLOCK_REALTIME, &t);  * secs   = t.tv_sec;  * micros = t.tv_nsec / 1000;  return res;}#elseNDB_TICKS NdbTick_CurrentMillisecond(void){  struct timeval tick_time;  gettimeofday(&tick_time, 0);  return     ((NDB_TICKS)tick_time.tv_sec)  * ((NDB_TICKS)MILLISEC_PER_SEC) +    ((NDB_TICKS)tick_time.tv_usec) / ((NDB_TICKS)MICROSEC_PER_MILLISEC);}int NdbTick_CurrentMicrosecond(NDB_TICKS * secs, Uint32 * micros){  struct timeval tick_time;  int res = gettimeofday(&tick_time, 0);  if(secs==0) {    NDB_TICKS secs   = tick_time.tv_sec;    *micros = tick_time.tv_usec;    *micros = secs*1000000+*micros;      } else {      * secs   = tick_time.tv_sec;      * micros = tick_time.tv_usec;    }  return res;}#endif#ifdef TIME_MEASUREMENTintNdbTick_getMicroTimer(struct MicroSecondTimer* input_timer){  NDB_TICKS secs;  Uint32 mics;  int ret_value;  ret_value = NdbTick_CurrentMicrosecond(&secs, &mics);  input_timer->seconds = secs;  input_timer->micro_seconds = (NDB_TICKS)mics;  return ret_value;}NDB_TICKSNdbTick_getMicrosPassed(struct MicroSecondTimer start,                        struct MicroSecondTimer stop){  NDB_TICKS ret_value = (NDB_TICKS)0;  if (start.seconds < stop.seconds) {    NDB_TICKS sec_passed = stop.seconds - start.seconds;    ret_value = ((NDB_TICKS)MICROSEC_PER_SEC) * sec_passed;  } else if (start.seconds > stop.seconds) {    return ret_value;  }  if (start.micro_seconds < stop.micro_seconds) {    ret_value += (stop.micro_seconds - start.micro_seconds);  } else if (ret_value != (NDB_TICKS)0) {    ret_value -= (start.micro_seconds - stop.micro_seconds);  }  return ret_value;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -