[PATCH] Multi threaded version of osl_getGlobalTime on Unix
Arnaud Versini (via Code Review)
gerrit at gerrit.libreoffice.org
Sun May 19 04:25:36 PDT 2013
Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/3960
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/60/3960/1
Multi threaded version of osl_getGlobalTime on Unix
Change-Id: Ibb9d23780600437f607d866ff3d396b96879245d
---
M sal/osl/unx/salinit.cxx
M sal/osl/unx/time.c
2 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/sal/osl/unx/salinit.cxx b/sal/osl/unx/salinit.cxx
index 327ca0e..b33e5f3 100644
--- a/sal/osl/unx/salinit.cxx
+++ b/sal/osl/unx/salinit.cxx
@@ -38,6 +38,8 @@
extern "C" {
+void sal_initGlobalTimer();
+
void sal_detail_initialize(int argc, char ** argv) {
#if defined MACOSX
// On Mac OS X, soffice can restart itself via exec (see restartOnMac in
diff --git a/sal/osl/unx/time.c b/sal/osl/unx/time.c
index c99036b..1516cd9 100644
--- a/sal/osl/unx/time.c
+++ b/sal/osl/unx/time.c
@@ -253,22 +253,37 @@
return sal_False;
}
+#if defined(LINUX)
+void sal_initGlobalTimer() {}
+
+sal_uInt32 SAL_CALL osl_getGlobalTimer()
+{
+ struct timespec currentTime;
+ int res;
+
+ res = clock_gettime(CLOCK_PROCESS_CPUTIME_ID , NULL);
+ if (res != 0)
+ {
+ return 0;
+ }
+
+ return currentTime.tv_sec + (currentTime.tv_nsec / 1000);
+}
+
+#else
static struct timeval startTime;
-static sal_Bool bGlobalTimer = sal_False;
+
+void sal_initGlobalTimer()
+{
+ gettimeofday( &startTime, NULL );
+}
sal_uInt32 SAL_CALL osl_getGlobalTimer()
{
struct timeval currentTime;
sal_uInt32 nSeconds;
-
- // FIXME: not thread safe !!
- if ( bGlobalTimer == sal_False )
- {
- gettimeofday( &startTime, NULL );
- bGlobalTimer=sal_True;
- }
gettimeofday( ¤tTime, NULL );
@@ -277,4 +292,6 @@
return ( nSeconds * 1000 ) + (long) (( currentTime.tv_usec - startTime.tv_usec) / 1000 );
}
+#endif
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
--
To view, visit https://gerrit.libreoffice.org/3960
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibb9d23780600437f607d866ff3d396b96879245d
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