[PATCH] Use clock_gettime when available on *nix

Arnaud Versini (via Code Review) gerrit at gerrit.libreoffice.org
Sun May 19 08:34:30 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3964

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/64/3964/1

Use clock_gettime when available on *nix

Change-Id: I65df2b119dbda274749ab2b4d0825fbdf44eb4e8
---
M sal/osl/unx/time.c
1 file changed, 11 insertions(+), 6 deletions(-)



diff --git a/sal/osl/unx/time.c b/sal/osl/unx/time.c
index 4294cd2..796e882 100644
--- a/sal/osl/unx/time.c
+++ b/sal/osl/unx/time.c
@@ -24,6 +24,7 @@
 #include <osl/time.h>
 #include <time.h>
 #include <assert.h>
+#include <unistd>
 
 /* FIXME: detection should be done in configure script */
 #if defined(MACOSX) || defined(FREEBSD) || defined(NETBSD) || \
@@ -34,7 +35,11 @@
 #define HAS_ALTZONE 1
 #endif
 
-#if defined(LINUX)
+#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0)
+#define USE_CLOCK_GETTIME 1
+#endif
+
+#if USE_CLOCK_GETTIME
 typedef struct timespec osl_time_t;
 #else
 typedef struct timeval osl_time_t;
@@ -48,7 +53,7 @@
 {
     int res;
     osl_time_t tp;
-#if defined(LINUX)
+#if defined(USE_CLOCK_GETTIME)
     res = clock_gettime(CLOCK_REALTIME, &tp);
 #else
     res = gettimeofday(&tp, NULL);
@@ -60,7 +65,7 @@
     }
 
     tv->Seconds = tp.tv_sec;
-    #if defined(LINUX)
+    #if defined(USE_CLOCK_GETTIME)
     tv->Nanosec = tp.tv_nsec;
     #else
     tv->Nanosec = tp.tv_usec * 1000;
@@ -262,7 +267,7 @@
 void sal_initGlobalTimer()
 {
   int res;
-  #if defined(LINUX)
+  #if defined(USE_CLOCK_GETTIME)
   res = clock_gettime(CLOCK_REALTIME, &startTime);
   #else
   res = gettimeofday( &startTime, NULL );
@@ -277,7 +282,7 @@
   int res;
   sal_uInt32 nSeconds;
 
-  #if defined(LINUX)
+  #if defined(USE_CLOCK_GETTIME)
   res = clock_gettime(CLOCK_REALTIME, &startTime);
   #else
   res = gettimeofday( &startTime, NULL );
@@ -289,7 +294,7 @@
     return 0;
 
   nSeconds = (sal_uInt32)( currentTime.tv_sec - startTime.tv_sec );
-  #if defined(LINUX)
+  #if defined(USE_CLOCK_GETTIME)
   nSeconds = ( nSeconds * 1000 ) + (long) (( currentTime.tv_nsec - startTime.tv_nsec) / 1000000 );
   #else
   nSeconds = ( nSeconds * 1000 ) + (long) (( currentTime.tv_usec - startTime.tv_usec) / 1000 );

-- 
To view, visit https://gerrit.libreoffice.org/3964
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I65df2b119dbda274749ab2b4d0825fbdf44eb4e8
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Arnaud Versini <arnaud.versini at gmail.com>



More information about the LibreOffice mailing list