On Thu, 1 May 2014, D. Hugh Redelmeier wrote:

| Don't mix up monotonic time with wall clock time (AKA CLOCK_REALTIME).
| Some uses need one and some need another.

For this reason, I propose that different types be used for the
different purposes.  Then the C language type system could catch some
mix-ups.

So how about:

/* monotonic version of time(3) */
time_t now_monotonic(void)
{
        struct timespec res;
        if (clock_getres(CLOCK_MONOTONIC, &res) == 0) {
                /* can this ever happen? */
                return time(NULL);
        }
        return res.tv_sec;
}

time_t now_real(void)
{
        struct timespec res;
        if (clock_getres(CLOCK_REALTIME, &res) == 0) {
                /* can this ever happen? */
                return time(NULL);
        }
        return res.tv_sec;

}

I have no idea when clock_getres() would return an error, so I didn't
want to passert() on it.

Then we use now_monotonic() only for items related the our event
scheduling?

Paul
_______________________________________________
Swan-dev mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan-dev

Reply via email to