From owner-freebsd-x11@FreeBSD.ORG Wed Feb 27 10:01:05 2008 Return-Path: Delivered-To: freebsd-x11@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5F76D1065673 for ; Wed, 27 Feb 2008 10:01:05 +0000 (UTC) (envelope-from tmueller@sysgo.com) Received: from mail.sysgo.com (mail.sysgo.com [62.8.134.5]) by mx1.freebsd.org (Postfix) with ESMTP id 20DF113C447 for ; Wed, 27 Feb 2008 10:01:04 +0000 (UTC) (envelope-from tmueller@sysgo.com) Received: from donald.sysgo.com (unknown [172.20.1.30]) by mail.sysgo.com (Postfix) with ESMTP id B301BCD5BF; Wed, 27 Feb 2008 10:28:58 +0100 (CET) Received: from tom.ulm.sysgo.com (unknown [172.30.3.10]) by donald.sysgo.com (Postfix) with ESMTP id CC05C2E42D9; Wed, 27 Feb 2008 10:28:57 +0100 (CET) Date: Wed, 27 Feb 2008 10:32:10 +0100 From: Thomas Mueller To: John Hein Message-ID: <20080227103210.694787ec@tom.ulm.sysgo.com> In-Reply-To: <18371.11144.568407.26227@gromit.timing.com> References: <47C320DB.70004@delphij.net> <18371.11144.568407.26227@gromit.timing.com> Organization: SYSGO AG X-Mailer: Claws Mail 3.3.0 (GTK+ 2.12.8; i386-portbld-freebsd7.0) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: freebsd-x11@freebsd.org, d@delphij.net Subject: Re: Xorg vs gettimeofday() and clock_gettime() X-BeenThere: freebsd-x11@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: X11 on FreeBSD -- maintaining and support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Feb 2008 10:01:05 -0000 On Mon, 25 Feb 2008 13:56:40 -0700, John Hein wrote: > Xin LI wrote at 12:11 -0800 on Feb 25, 2008: > > Shall we make some source-level change to Xorg (either upstream under > > ifdef FreeBSD or our own port, _FAST clocks are not available on some > > other operating systems) so that we can override the gettimeofday() > > direct calls and X_GETTIMEOFDAY's to use clock_gettime with a faster clock? > > Sounds good to me. > I vote for putting in a patch in the x11-servers/xorg-server port so > it gets some quick exposure and then feeding it back upstream where > it can be added on their schedule. FWIW, xorg already has support for clock_gettime(CLOCK_MONOTONIC) in xorg-server-1.4/os/utils.c: _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); } Apparently the autoconf check for presence of CLOCK_MONOTONIC fails on FreeBSD: #define _POSIX_C_SOURCE 199309L #include int main(int argc, char *argv[]) { struct timespec tp; if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) return 0; else return 1; } /usr/include/time.h: #if !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 #define CLOCK_REALTIME 0 [...] #define CLOCK_MONOTONIC 4 Was CLOCK_MONOTONIC already defined for _POSIX_C_SOURCE 199309? -- Thomas Mueller