qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Add configure clock_gettime() monotonic time te


From: Brad Smith
Subject: Re: [Qemu-devel] [PATCH] Add configure clock_gettime() monotonic time test
Date: Wed, 3 Apr 2013 15:22:24 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

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 <address@hidden> 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) {

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]