From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:41107) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNuQP-0005Bm-4Z for qemu-devel@nongnu.org; Thu, 04 Apr 2013 20:22:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UNuQE-0004QF-K1 for qemu-devel@nongnu.org; Thu, 04 Apr 2013 20:22:37 -0400 Received: from mail-ob0-x232.google.com ([2607:f8b0:4003:c01::232]:56409) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNuQE-0004Px-Ff for qemu-devel@nongnu.org; Thu, 04 Apr 2013 20:22:26 -0400 Received: by mail-ob0-f178.google.com with SMTP id wd20so3187595obb.37 for ; Thu, 04 Apr 2013 17:22:25 -0700 (PDT) From: Anthony Liguori In-Reply-To: <20130404172155.GB884@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> <20130404172155.GB884@rox.home.comstyle.com> Date: Thu, 04 Apr 2013 19:22:16 -0500 Message-ID: <87r4ipddxj.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii 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 , Paolo Bonzini Cc: Peter Maydell , qemu-devel@nongnu.org Brad Smith writes: > On Wed, Apr 03, 2013 at 03:22:24PM -0400, Brad Smith wrote: >> 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. > > Any further comments? Please submit a top-level patch and I'll apply it. Regards, Anthony Liguori > >> 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) { >> >> -- >> This message has been scanned for viruses and >> dangerous content by MailScanner, and is >> believed to be clean. >> >> > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean.