From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:57935) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNTrp-0000GR-Dp for qemu-devel@nongnu.org; Wed, 03 Apr 2013 16:01:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UNTrm-0003O6-7t for qemu-devel@nongnu.org; Wed, 03 Apr 2013 16:01:09 -0400 Received: from mx3-phx2.redhat.com ([209.132.183.24]:50999) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNTrl-0003Nv-Vz for qemu-devel@nongnu.org; Wed, 03 Apr 2013 16:01:06 -0400 Date: Wed, 3 Apr 2013 16:00:51 -0400 (EDT) From: Paolo Bonzini Message-ID: <561137880.56703.1365019251693.JavaMail.root@redhat.com> In-Reply-To: <20130403192223.GC326@rox.home.comstyle.com> References: <20130402154214.GJ26146@rox.home.comstyle.com> <515B0B1D.9050202@redhat.com> <515BE5EB.7040200@redhat.com> <20130403192223.GC326@rox.home.comstyle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] Add configure clock_gettime() monotonic time test List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Brad Smith Cc: Peter Maydell , qemu-devel@nongnu.org > On Wed, Apr 03, 2013 at 10:18:51AM +0200, Paolo Bonzini wrote: > > Il 03/04/2013 00:52, Peter Maydell ha scritto: > > > On 2 April 2013 17:45, Paolo Bonzini wrote: > > >> Il 02/04/2013 17:42, Brad Smith ha scritto: > > >>> Replace the hardcoded list of OS's utilizing clock_gettime() for > > >>> monotonic > > >>> time with a configure test. This is to fix the use of monotonic time on > > >>> OpenBSD but allows for other POSIX compliant OS's such as NetBSD to > > >>> also > > >>> utilize clock_gettime(). > > >> > > >> I thought the list of OSes was supposed to filter out those that somehow > > >> had a broken CLOCK_MONOTONIC. > > > > > > Judging from wading through git history, it's mostly just > > > historic accretion from an initial #ifdef __linux__ which was > > > put in by Fabrice way back when configure was barely doing > > > compile-this-code checks at all. > > > > > > Google does suggest that some OSes do provide a CLOCK_MONOTONIC > > > but clock_gettime(CLOCK_MONOTONIC) always fails, eg Centos 3. > > > > It would already fail, and no one reported it. > > > > CentOS 3 has a 2.4 kernel. I doubt anyone is using it with a recent QEMU. > > > > Paolo > > > > >> Otherwise, you might as well use "#ifdef CLOCK_MONOTONIC" and skip the > > >> configure test completely. > > > > > > Tempting. > > > > > > -- PMM > > Then how about the following? This looks like it should be good > for Linux, *BSD's, Solaris. > > > diff --git a/include/qemu/timer.h b/include/qemu/timer.h > index 1766b2d..c363190 100644 > --- a/include/qemu/timer.h > +++ b/include/qemu/timer.h > @@ -117,8 +117,7 @@ extern int use_rt_clock; > > static inline int64_t get_clock(void) > { > -#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= > 500000) \ > - || defined(__DragonFly__) || defined(__FreeBSD_kernel__) > +#ifdef CLOCK_MONOTONIC > if (use_rt_clock) { > struct timespec ts; > clock_gettime(CLOCK_MONOTONIC, &ts); > diff --git a/util/qemu-timer-common.c b/util/qemu-timer-common.c > index 16f5e75..95e0847 100644 > --- a/util/qemu-timer-common.c > +++ b/util/qemu-timer-common.c > @@ -49,9 +49,7 @@ int use_rt_clock; > static void __attribute__((constructor)) init_get_clock(void) > { > use_rt_clock = 0; > -#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= > 500000) \ > - || defined(__DragonFly__) || defined(__FreeBSD_kernel__) \ > - || defined(__OpenBSD__) > +#ifdef CLOCK_MONOTONIC > { > struct timespec ts; > if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { > Reviewed-by: Paolo Bonzini Paolo