From 13dd754a8c0113bebc0ad65def80d4caf5fc9b60 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Tue, 18 Jun 2013 11:26:37 -0700 Subject: [PATCH] Suggested changes to counting time in Abc_Clock() --- Makefile | 2 +- src/misc/util/abc_global.h | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 6db73c5e9..0950b1670 100644 --- a/Makefile +++ b/Makefile @@ -62,7 +62,7 @@ endif endif -LIBS := -ldl +LIBS := -ldl -lrt ifneq ($(READLINE),0) CFLAGS += -DABC_USE_READLINE diff --git a/src/misc/util/abc_global.h b/src/misc/util/abc_global.h index 5d6a8aebe..d9aa9701a 100644 --- a/src/misc/util/abc_global.h +++ b/src/misc/util/abc_global.h @@ -271,18 +271,18 @@ static inline int Abc_Lit2LitL( int * pMap, int Lit ) { return Abc_LitNo typedef ABC_INT64_T abctime; static inline abctime Abc_Clock() { - static abctime PeriodNum = 0; - static clock_t Period = ((abctime)1 << 30); - clock_t ClockTime = clock(); - if ( ClockTime >= Period ) - { - ClockTime -= Period; - PeriodNum++; - } - return PeriodNum * Period + ClockTime; +#if defined(LIN) || defined(LIN64) + struct timespec ts; + if ( clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) < 0 ) + return (abctime)-1; + abctime res = ((abctime) ts.tv_sec) * CLOCKS_PER_SEC; + res += (((abctime) ts.tv_nsec) * CLOCKS_PER_SEC) / 1000000000; + return res; +#else + return (abctime) clock(); +#endif } - // bridge communication #define BRIDGE_NETLIST 106 #define BRIDGE_ABS_NETLIST 107