summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--src/misc/util/abc_global.h20
2 files changed, 11 insertions, 11 deletions
diff --git a/Makefile b/Makefile
index 6db73c5e..0950b167 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 5d6a8aeb..d9aa9701 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