From d0d3deb73c9f185985e62b6b6bda76a4d324e9e8 Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Mon, 7 Sep 2020 11:56:12 +0200 Subject: [PATCH] Properly query sysconf settting and use NAN if unavailable This also fixes an issue with time returned negative if sysconf(_SC_CLK_TCK) returned an error. --- linux/LinuxProcessList.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/linux/LinuxProcessList.c b/linux/LinuxProcessList.c index 33248b50..18dda3ed 100644 --- a/linux/LinuxProcessList.c +++ b/linux/LinuxProcessList.c @@ -219,10 +219,18 @@ void ProcessList_delete(ProcessList* pl) { free(this); } -static double jiffy = 0.0; +static double jiffy = NAN; static inline unsigned long long LinuxProcess_adjustTime(unsigned long long t) { - if(jiffy == 0.0) jiffy = sysconf(_SC_CLK_TCK); + if(isnan(jiffy)) { + errno = 0; + long sc_jiffy = sysconf(_SC_CLK_TCK); + if(errno || -1 == sc_jiffy) { + jiffy = NAN; + return t; // Assume 100Hz clock + } + jiffy = sc_jiffy; + } double jiffytime = 1.0 / jiffy; return (unsigned long long) t * jiffytime * 100; }