summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore1
-rw-r--r--client/mysqltest.c2
-rw-r--r--include/config-win.h4
-rw-r--r--mysys/my_getsystime.c34
4 files changed, 15 insertions, 26 deletions
diff --git a/.bzrignore b/.bzrignore
index 6e09cdd7b5d..038627aade2 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -3012,3 +3012,4 @@ win/vs8cache.txt
ylwrap
zlib/*.ds?
zlib/*.vcproj
+libmysqld/sql_profile.cc
diff --git a/client/mysqltest.c b/client/mysqltest.c
index f6af4b430c4..9b96810e732 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -7330,7 +7330,7 @@ void timer_output(void)
ulonglong timer_now(void)
{
- return my_getsystime() / 10000;
+ return my_micro_time() / 1000;
}
diff --git a/include/config-win.h b/include/config-win.h
index e0558ca4564..246e4da76a9 100644
--- a/include/config-win.h
+++ b/include/config-win.h
@@ -257,9 +257,11 @@ inline double ulonglong2double(ulonglong value)
#define tell(A) _telli64(A)
#endif
-
#define STACK_DIRECTION -1
+/* Difference between GetSystemTimeAsFileTime() and now() */
+#define OFFSET_TO_EPOCH ULL(116444736000000000)
+
/* Optimized store functions for Intel x86 */
#ifndef _WIN64
diff --git a/mysys/my_getsystime.c b/mysys/my_getsystime.c
index 4fdd979f4bb..e4f6abd1d68 100644
--- a/mysys/my_getsystime.c
+++ b/mysys/my_getsystime.c
@@ -41,7 +41,7 @@ ulonglong my_getsystime()
{
QueryPerformanceCounter(&t_cnt);
return ((t_cnt.QuadPart / query_performance_frequency * 10000000) +
- (t_cnt.QuadPart % query_performance_frequency * 10000000 /
+ ((t_cnt.QuadPart % query_performance_frequency) * 10000000 /
query_performance_frequency) + query_performance_offset);
}
return 0;
@@ -108,21 +108,14 @@ time_t my_time(myf flags __attribute__((unused)))
ulonglong my_micro_time()
{
- ulonglong newtime;
#if defined(__WIN__)
- if (query_performance_frequency)
- {
- QueryPerformanceCounter((LARGE_INTEGER*) &newtime);
- return ((newtime / query_performance_frequency * 10000000) +
- (newtime % query_performance_frequency * 10000000 /
- query_performance_frequency));
- }
- else
- newtime= (GetTickCount() * 1000); /* GetTickCount only returns millisec */
- return newtime;
+ ulonglong newtime;
+ GetSystemTimeAsFileTime((FILETIME*)&newtime);
+ return (newtime/10);
#elif defined(HAVE_GETHRTIME)
return gethrtime()/1000;
#else
+ ulonglong newtime;
struct timeval t;
/*
The following loop is here because gettimeofday may fail on some systems
@@ -161,19 +154,11 @@ ulonglong my_micro_time()
ulonglong my_micro_time_and_time(time_t *time_arg)
{
- ulonglong newtime;
#if defined(__WIN__)
- if (query_performance_frequency)
- {
- QueryPerformanceCounter((LARGE_INTEGER*) &newtime);
- return ((newtime / query_performance_frequency * 10000000) +
- (newtime % query_performance_frequency * 10000000 /
- query_performance_frequency));
- }
- else
- newtime= (GetTickCount() * 1000); /* GetTickCount only returns millisec. */
- (void) time(time_arg);
- return newtime;
+ ulonglong newtime;
+ GetSystemTimeAsFileTime((FILETIME*)&newtime);
+ *time_arg= (newtime-OFFSET_TO_EPOCH)/10000000;
+ return (newtime/10);
#elif defined(HAVE_GETHRTIME)
/*
Solaris has a very slow time() call. We optimize this by using the very
@@ -194,6 +179,7 @@ ulonglong my_micro_time_and_time(time_t *time_arg)
pthread_mutex_unlock(&THR_LOCK_time);
return cur_gethrtime/1000;
#else
+ ulonglong newtime;
struct timeval t;
/*
The following loop is here because gettimeofday may fail on some systems