From ee2a5ae8f436c19cc8f7d11cae1a354d2ef8ebdf Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 20 Aug 2013 20:46:09 +1000 Subject: [PATCH] TimeBeginPeriod and TimeEndPeriod do not add significant overhead when run the entire time for cgminer so avoid trying to maintain balanced numbers of them for specific time calls to simplify code. --- cgminer.c | 7 +++++++ util.c | 23 +++-------------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/cgminer.c b/cgminer.c index 8e921be4..c657c975 100644 --- a/cgminer.c +++ b/cgminer.c @@ -37,6 +37,8 @@ #ifndef WIN32 #include +#else +#include #endif #include #include @@ -6790,6 +6792,9 @@ static void clean_up(void) #endif cgtime(&total_tv_end); +#ifdef WIN32 + timeEndPeriod(1); +#endif #ifdef HAVE_CURSES disable_curses(); #endif @@ -7449,6 +7454,8 @@ int main(int argc, char *argv[]) sigaction(SIGINT, &handler, &inthandler); #ifndef WIN32 signal(SIGPIPE, SIG_IGN); +#else + timeBeginPeriod(1); #endif opt_kernel_path = alloca(PATH_MAX); strcpy(opt_kernel_path, CGMINER_PREFIX); diff --git a/util.c b/util.c index f555c6ed..f0b39c91 100644 --- a/util.c +++ b/util.c @@ -807,24 +807,10 @@ void thr_info_cancel(struct thr_info *thr) /* This is a cgminer gettimeofday wrapper. Since we always call gettimeofday * with tz set to NULL, and windows' default resolution is only 15ms, this * gives us higher resolution times on windows. */ -#ifndef WIN32 void cgtime(struct timeval *tv) { gettimeofday(tv, NULL); } -#else -static void __cgtime(struct timeval *tv) -{ - gettimeofday(tv, NULL); -} - -void cgtime(struct timeval *tv) -{ - timeBeginPeriod(1); - __cgtime(tv); - timeEndPeriod(1); -} -#endif void subtime(struct timeval *a, struct timeval *b) { @@ -938,8 +924,7 @@ void cgsleep_us_r(cgtimer_t *ts_start, int64_t us) #else void cgsleep_prepare_r(cgtimer_t *ts_start) { - timeBeginPeriod(1); - __cgtime(ts_start); + cgtime(ts_start); } static void ms_to_timeval(struct timeval *val, int ms) @@ -957,14 +942,12 @@ void cgsleep_ms_r(cgtimer_t *ts_start, int ms) ms_to_timeval(&tv_diff, ms); timeradd(ts_start, &tv_diff, &tv_end); - __cgtime(&now); + cgtime(&now); if (unlikely(time_more(&now, &tv_end))) - goto out; + return; timersub(&tv_end, &now, &tv_diff); timeval_to_spec(&ts_diff, &tv_diff); nanosleep(&ts_diff, NULL); -out: - timeEndPeriod(1); } void cgsleep_us_r(cgtimer_t *ts_start, int64_t us)