EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: [Merge] ~freddie-akeroyd/epics-base:fix_win32_monotonic_time into epics-base:7.0
From: Freddie Akeroyd via Core-talk <core-talk at aps.anl.gov>
To: mp+391018 at code.launchpad.net
Date: Wed, 30 Sep 2020 10:56:54 -0000

Diff comments:

> diff --git a/modules/libcom/src/osi/os/WIN32/osdMonotonic.c b/modules/libcom/src/osi/os/WIN32/osdMonotonic.c
> index cb84643..208c1aa 100644
> --- a/modules/libcom/src/osi/os/WIN32/osdMonotonic.c
> +++ b/modules/libcom/src/osi/os/WIN32/osdMonotonic.c
> @@ -39,15 +42,10 @@ epicsUInt64 epicsMonotonicResolution(void)
>  epicsUInt64 epicsMonotonicGet(void)
>  {
>      LARGE_INTEGER val;
> -    if(osdUsePrefCounter) {
> -        if(!QueryPerformanceCounter(&val)) {
> -            errMessage(errlogMinor, "Warning: failed to fetch performance counter\n");
> -            return 0;
> -        } else
> -            return val.QuadPart;
> +    if(!QueryPerformanceCounter(&val)) {
> +        cantProceed("epicsMonotonicGet: Failed to read Windows Performance Counter\n");
> +        return 0;
>      } else {
> -        epicsUInt64 ret = GetTickCount();
> -        ret *= 1000000;
> -        return ret;
> +        return (epicsUInt64)(val.QuadPart * perfCounterScale + 0.5); /* return value in nanoseconds */

Thinking more about the precision, the issue is that we could end up subtracting two large numbers returned from epicsMonotonicGet() as we are forcing the return value into nanoseconds. Could we change the monotonic interface to be more like the current epics time one so refer to an epicsMonotonic system dependent type (which on windows would contain the val.QuadPart LARGE_INTEGER as is) and then use an epicsMonotonicDiffInSeconds() type command to compute required deltas

>      }
>  }


-- 
https://code.launchpad.net/~freddie-akeroyd/epics-base/+git/epics-base/+merge/391018
Your team EPICS Core Developers is subscribed to branch epics-base:7.0.

References:
[Merge] ~freddie-akeroyd/epics-base:fix_win32_monotonic_time into epics-base:7.0 Freddie Akeroyd via Core-talk

Navigate by Date:
Prev: Re: [Merge] ~freddie-akeroyd/epics-base:fix_win32_monotonic_time into epics-base:7.0 mdavidsaver via Core-talk
Next: Re: [Merge] ~freddie-akeroyd/epics-base:fix_win32_monotonic_time into epics-base:7.0 Freddie Akeroyd via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: Re: [Merge] ~freddie-akeroyd/epics-base:fix_win32_monotonic_time into epics-base:7.0 mdavidsaver via Core-talk
Next: Re: [Merge] ~freddie-akeroyd/epics-base:fix_win32_monotonic_time into epics-base:7.0 Freddie Akeroyd via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
ANJ, 30 Sep 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·