[pulseaudio-discuss] [PATCH] use CLOCK_MONOTONIC_COARSE to reduce the system call

Deng Zhenrong dzrongg at gmail.com
Thu Mar 29 06:31:31 PDT 2012


According to the description below:

        http://lkml.org/lkml/2009/7/17/258

There are two benefits:
a) it doesn't need to access the hardware.
b) avoid the syscall by using vdso clock_gettime().

The cons is the CLOCK_MONOTONIC_COARSE returns the time at the last
tick.

Signed-off-by: Deng Zhenrong <dzrongg at gmail.com>
---
 src/pulsecore/core-rtclock.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/pulsecore/core-rtclock.c b/src/pulsecore/core-rtclock.c
index 6632cc6..4b6daa1 100644
--- a/src/pulsecore/core-rtclock.c
+++ b/src/pulsecore/core-rtclock.c
@@ -82,12 +82,16 @@ struct timeval *pa_rtclock_get(struct timeval *tv) {
 #elif defined(HAVE_CLOCK_GETTIME)
     struct timespec ts;
 
-#ifdef CLOCK_MONOTONIC
+#if defined(CLOCK_MONOTONIC) || defined(CLOCK_MONOTONIC_COARSE)
     /* No locking or atomic ops for no_monotonic here */
     static pa_bool_t no_monotonic = FALSE;
 
     if (!no_monotonic)
+#ifdef CLOCK_MONOTONIC_COARSE
+        if (clock_gettime(CLOCK_MONOTONIC_COARSE, &ts) < 0)
+#else
         if (clock_gettime(CLOCK_MONOTONIC, &ts) < 0)
+#endif /* CLOCK_MONOTONIC_COARSE */
             no_monotonic = TRUE;
 
     if (no_monotonic)
-- 
1.7.6.5



More information about the pulseaudio-discuss mailing list