about XSync extension problem.
lantian ai
ailantian at googlemail.com
Tue Nov 17 18:41:56 PST 2009
Thanks Ajax:
patch is coming
The problem is in configure.ac
the scripts check MONOTONIC_CLOCK like this (xorg 1.6.2)
AC_RUN_IFELSE([
#include <time.h>
int main(int argc, char *argv[[]]) {
struct timespec tp;
if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
return 0;
else
return 1;
}
], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
[MONOTONIC_CLOCK="cross compiling"])
LIBS="$LIBS_SAVE $CLOCK_LIBS"
CPPFLAGS="$CPPFLAGS_SAVE"
else
MONOTONIC_CLOCK=no
fi
AC_MSG_RESULT([$MONOTONIC_CLOCK])
if test "x$MONOTONIC_CLOCK" = xyes; then
AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
LIBS="$LIBS $CLOCK_LIBS"
fi
But the configure scripts return like this
checking for clock_gettime... yes
checking for a useful monotonic clock ...... cross compiling
it is not "yes"
it is "cross compiling"
So in dix-config.h MONOTONIC_CLOCK is not defined
another problem is after we checked clock_gettime,
then we check MONOTONIC_CLOCK, we need to use
LIBS="$LIBS_SAVE $CLOCK_LIBS"
and the orrginal is LIBS="$LIBS_SAVE
LIBS="$LIBS_SAVE
when we use this LDFLAG, compile clock_gettime will fail
Thanks
Best regards
ailantian
2009/11/18 lantian ai <ailantian at googlemail.com>:
> Hello Ajax :
>
> Sorry ,an update here
>
> I need to use this command compile the test programme. it is ok.
>
> ailantian at vax:~/mypg$ arm-ThunderST-linux-gnueabi-gcc clock.c -o clock -lrt
>
>
> Thanks
>
> Best regards
>
> ailantian
>
> 2009/11/18 lantian ai <ailantian at googlemail.com>:
>> Hello ajax:
>>
>> Thanks for your help .
>>
>> That is the reason. I checked the configure log, My cross toolchain
>> don't support this function.
>>
>> ailantian at vax:~/stuff/workspace/work/armv7a-ThunderST-linux-gnueabi/xserver-xorg-2_1.6.2-r1/xorg-server-1.6.2$
>> grep MONOTONIC_CLOCK * -R
>> autom4te.cache/output.0: MONOTONIC_CLOCK="cross compiling"
>> autom4te.cache/output.0: MONOTONIC_CLOCK=yes
>> autom4te.cache/output.0:MONOTONIC_CLOCK=no
>> autom4te.cache/output.0: MONOTONIC_CLOCK=no
>> autom4te.cache/output.0:{ echo "$as_me:$LINENO: result: $MONOTONIC_CLOCK" >&5
>> autom4te.cache/output.0:echo "${ECHO_T}$MONOTONIC_CLOCK" >&6; }
>> autom4te.cache/output.0:if test "x$MONOTONIC_CLOCK" = xyes; then
>> autom4te.cache/output.0:@%:@define MONOTONIC_CLOCK 1
>> autom4te.cache/output.1: MONOTONIC_CLOCK="cross compiling"
>> autom4te.cache/output.1: MONOTONIC_CLOCK=yes
>> autom4te.cache/output.1:MONOTONIC_CLOCK=no
>> autom4te.cache/output.1: MONOTONIC_CLOCK=no
>> autom4te.cache/output.1:{ echo "$as_me:$LINENO: result: $MONOTONIC_CLOCK" >&5
>> autom4te.cache/output.1:echo "${ECHO_T}$MONOTONIC_CLOCK" >&6; }
>> autom4te.cache/output.1:if test "x$MONOTONIC_CLOCK" = xyes; then
>> autom4te.cache/output.1:@%:@define MONOTONIC_CLOCK 1
>> autom4te.cache/output.2: MONOTONIC_CLOCK="cross compiling"
>> autom4te.cache/output.2: MONOTONIC_CLOCK=yes
>> autom4te.cache/output.2:MONOTONIC_CLOCK=no
>> autom4te.cache/output.2: MONOTONIC_CLOCK=no
>> autom4te.cache/output.2:{ echo "$as_me:$LINENO: result: $MONOTONIC_CLOCK" >&5
>> autom4te.cache/output.2:echo "${ECHO_T}$MONOTONIC_CLOCK" >&6; }
>> autom4te.cache/output.2:if test "x$MONOTONIC_CLOCK" = xyes; then
>> autom4te.cache/output.2:@%:@define MONOTONIC_CLOCK 1
>> autom4te.cache/traces.0:m4trace:configure.ac:771: -1-
>> m4_pattern_allow([^MONOTONIC_CLOCK$])
>> autom4te.cache/traces.1:m4trace:configure.ac:771: -1-
>> AC_DEFINE_TRACE_LITERAL([MONOTONIC_CLOCK])
>> autom4te.cache/traces.1:m4trace:configure.ac:771: -1-
>> m4_pattern_allow([^MONOTONIC_CLOCK$])
>> autom4te.cache/traces.1:m4trace:configure.ac:771: -1-
>> AH_OUTPUT([MONOTONIC_CLOCK], [/* Have monotonic clock from
>> clock_gettime() */
>> autom4te.cache/traces.1:#undef MONOTONIC_CLOCK])
>> autom4te.cache/traces.2:m4trace:configure.ac:771: -1-
>> AC_DEFINE_TRACE_LITERAL([MONOTONIC_CLOCK])
>> autom4te.cache/traces.2:m4trace:configure.ac:771: -1-
>> m4_pattern_allow([^MONOTONIC_CLOCK$])
>> autom4te.cache/traces.2:m4trace:configure.ac:771: -1-
>> AH_OUTPUT([MONOTONIC_CLOCK], [/* Have monotonic clock from
>> clock_gettime() */
>> autom4te.cache/traces.2:#undef MONOTONIC_CLOCK])
>> configure: MONOTONIC_CLOCK="cross compiling"
>> configure: MONOTONIC_CLOCK=yes
>> configure:MONOTONIC_CLOCK=no
>> configure: MONOTONIC_CLOCK=no
>> configure:{ echo "$as_me:$LINENO: result: $MONOTONIC_CLOCK" >&5
>> configure:echo "${ECHO_T}$MONOTONIC_CLOCK" >&6; }
>> configure:if test "x$MONOTONIC_CLOCK" = xyes; then
>> configure:#define MONOTONIC_CLOCK 1
>> configure.ac: ], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
>> configure.ac: [MONOTONIC_CLOCK="cross compiling"])
>> configure.ac: MONOTONIC_CLOCK=no
>> configure.ac:AC_MSG_RESULT([$MONOTONIC_CLOCK])
>> configure.ac:if test "x$MONOTONIC_CLOCK" = xyes; then
>> configure.ac: AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock
>> from clock_gettime()])
>> cscope.out:MONOTONIC_CLOCK
>> cscope.out: m_SC_MONOTONIC_CLOCK
>> cscope.out: #_SC_MONOTONIC_CLOCK
>> cscope.out:_SC_MONOTONIC_CLOCK
>> cscope.out: #_POSIX_MONOTONIC_CLOCK
>> Binary file hw/vfb/.libs/Xvfb matches
>> Binary file hw/kdrive/sdl/.libs/Xsdl matches
>> Binary file hw/kdrive/ephyr/.libs/Xephyr matches
>> Binary file hw/xfree86/.libs/Xorg matches
>> include/dix-config.h:/* #undef MONOTONIC_CLOCK */
>> include/do-not-use-config.h.in:#undef MONOTONIC_CLOCK
>> include/do-not-use-config.h.in~:#undef MONOTONIC_CLOCK
>> include/do-not-use-config.h:/* #undef MONOTONIC_CLOCK */
>> include/dix-config.h.in:#undef MONOTONIC_CLOCK
>> Binary file os/.libs/libos.a matches
>> Binary file os/.libs/xstrans.o matches
>> Binary file os/.libs/connection.o matches
>> os/utils.c:#ifdef MONOTONIC_CLOCK
>>
>>
>> I tried the programme in configure scripts
>>
>> #include <time.h>
>>
>> int main(int argc, char *argv[]) {
>> struct timespec tp;
>>
>> if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
>> return 0;
>> else
>> return 1;
>> }
>>
>>
>> ailantian at vax:~/mypg$ export PATH=$PATH:~/stuff/workspace/cross/armv7a/bin/
>> ailantian at vax:~/mypg$ arm-ThunderST-linux-gnueabi-gcc clock.c -o clock
>> /tmp/ccqZa0a0.o: In function `main':
>> clock.c:(.text+0x20): undefined reference to `clock_gettime'
>> collect2: ld returned 1 exit status
>> ailantian at vax:~/mypg$
>>
>>
>> Thanks very much.
>>
>> Could I do some work to fix this problem?
>>
>> My Xorg is using gettimeofday now, so when I change time, XSync will fail.
>>
>> Thanks
>>
>> Best regards
>>
>> ailantian
>>
>> 2009/11/18 Adam Jackson <ajax at nwnk.net>:
>>> On Tue, 2009-11-17 at 10:21 +0800, lantian ai wrote:
>>>
>>>> _X_EXPORT CARD32
>>>> GetTimeInMillis(void)
>>>> {
>>>> struct timeval tv;
>>>>
>>>> #ifdef MONOTONIC_CLOCK
>>>> struct timespec tp;
>>>> if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
>>>> return (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000L);
>>>> #endif
>>>>
>>>> X_GETTIMEOFDAY(&tv);
>>>> return(tv.tv_sec * 1000) + (tv.tv_usec / 1000);
>>>> }
>>>>
>>>> May be on desktop we use clock_gettime, on arm we use gettimeofday.
>>>>
>>>> But when we change the time , both will change? isn't it?
>>>
>>> If we were using clock_gettime(CLOCK_REALTIME), then changes to the
>>> system date and time would affect us, same as with gettimeofday(). This
>>> is in fact the _entire_ reason that we use CLOCK_MONOTONIC instead; X's
>>> internal notion of time is related to elapsed time, and not to whatever
>>> the user happened to set the date to.
>>>
>>> - ajax
>>>
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xorg-clock_gettimecheck2.patch
Type: text/x-patch
Size: 1054 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg/attachments/20091118/c7a9e67f/attachment.bin>
More information about the xorg
mailing list