From 5fb3d69560d4271ab029fa562f966bd076a4de02 Mon Sep 17 00:00:00 2001 From: Arthur Maciel Date: Mon, 1 Mar 2021 23:13:59 -0300 Subject: [PATCH 1/3] Moved from gettimeofday() to the more precise clock_gettime() --- scheme/time.sld | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/scheme/time.sld b/scheme/time.sld index a8803b2e..443b98ae 100644 --- a/scheme/time.sld +++ b/scheme/time.sld @@ -10,12 +10,9 @@ (export current-second current-jiffy - jiffies-per-second - ) - (include-c-header "") - (import (scheme base) - ) -;; TODO: get an FFI syntax for including C header files, even if it is not needed for this library + jiffies-per-second) + (include-c-header "") + (import (scheme base)) (begin (define-c current-second "(void *data, int argc, closure _, object k)" @@ -23,12 +20,13 @@ time_t t = time(NULL); double_value(&box) = t; return_closcall1(data, k, &box); ") + (define-c current-jiffy "(void *data, int argc, closure _, object k)" - " struct timeval tv; + " struct timespec now; make_double(box, 0.0); - gettimeofday(&tv, NULL); /* TODO: longer-term consider using clock_gettime instead */ - long long jiffy = (tv.tv_sec)*1000000LL + tv.tv_usec; + clock_gettime(CLOCK_MONOTONIC, &now); + long long jiffy = (now.tv_sec)*1000000LL + tv.tv_nsec/1000; // nano->microseconds /* Future consideration: mp_int bn_tmp, bn_tmp2, bn_tmp3; mp_init(&bn_tmp); @@ -50,5 +48,4 @@ "(void *data, int argc, closure _, object k)" " int n = 1000000; object obj = obj_int2obj(n); - return_closcall1(data, k, obj); ") - )) + return_closcall1(data, k, obj); "))) From 0ff0561ac907befdfe63dd8f77d31b230e43da29 Mon Sep 17 00:00:00 2001 From: Arthur Maciel Date: Mon, 1 Mar 2021 23:15:08 -0300 Subject: [PATCH 2/3] Moved from gettimeofday() to the more precise clock_gettime() --- scheme/time.sld | 1 - 1 file changed, 1 deletion(-) diff --git a/scheme/time.sld b/scheme/time.sld index 443b98ae..98907cb9 100644 --- a/scheme/time.sld +++ b/scheme/time.sld @@ -20,7 +20,6 @@ time_t t = time(NULL); double_value(&box) = t; return_closcall1(data, k, &box); ") - (define-c current-jiffy "(void *data, int argc, closure _, object k)" " struct timespec now; From e4eae1cdf981371decb1e7fff6e9d96dfef6dea2 Mon Sep 17 00:00:00 2001 From: Arthur Maciel Date: Mon, 1 Mar 2021 23:20:00 -0300 Subject: [PATCH 3/3] Moved from gettimeofday() to the more precise clock_gettime() --- scheme/time.sld | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scheme/time.sld b/scheme/time.sld index 98907cb9..4ad54128 100644 --- a/scheme/time.sld +++ b/scheme/time.sld @@ -25,7 +25,7 @@ " struct timespec now; make_double(box, 0.0); clock_gettime(CLOCK_MONOTONIC, &now); - long long jiffy = (now.tv_sec)*1000000LL + tv.tv_nsec/1000; // nano->microseconds + long long jiffy = (now.tv_sec)*1000000LL + now.tv_nsec/1000; // nano->microseconds /* Future consideration: mp_int bn_tmp, bn_tmp2, bn_tmp3; mp_init(&bn_tmp);