[PATCH_v2] use CLOCK_MONOTONIC_COARSE posix timer instead of CLOCK_MONOTONIC in Xorg
ykzhao
yakui.zhao at intel.com
Fri Aug 27 02:37:25 PDT 2010
On Fri, 2010-08-27 at 10:21 +0800, Yaakov (Cygwin/X) wrote:
> On Fri, 2010-08-27 at 09:20 +0800, Zhao Yakui wrote:
> > diff --git a/os/utils.c b/os/utils.c
> > index 51455cc..a37a99d 100644
> > --- a/os/utils.c
> > +++ b/os/utils.c
> > @@ -427,7 +427,17 @@ GetTimeInMillis(void)
> >
> > #ifdef MONOTONIC_CLOCK
> > struct timespec tp;
> > - if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
> > + static clockid_t clockid;
> > + if (!clockid) {
> > +#if defined(__linux__) && defined(CLOCK_MONONOTIC_COARSE)
>
> s/MONONOTIC/MONOTONIC/
Thanks for the catching. Sorry for the typo.
>
> But shouldn't that just be #ifdef CLOCK_MONOTONIC_COARSE? What if
> another system besides Linux implements it?
I am not sure whether this should be applied on other platform.
In fact I limit it to linux platform based on the discussion of V1
version(the coarse monotonic posix timer is supported on the latest
linux kernel).
>
> > + if ((clock_getres(CLOCK_MONOTONIC_COARSE, &tp) == 0) &&
> > + (tp.tv_nsec / 1000 <= 1000))
> > + clockid = CLOCK_MONOTONIC_COARSE;
> > + else
> > +#endif
> > + clockid = CLOCK_MONOTONIC;
> > + }
> > + if (clock_gettime(clockid, &tp) == 0)
> > return (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000L);
> > #endif
> >
>
>
> Yaakov
> Cygwin/X
>
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list