List:Commits« Previous MessageNext Message »
From:Tomas Ulin Date:September 15 2008 1:12pm
Subject:bzr commit into mysql-5.1 branch (tomas.ulin:2696)
View as plain text  
#At file:///home/tomas/mysql_src/mysql-5.1-telco-6.3/

 2696 Tomas Ulin	2008-09-15 [merge]
      merge
modified:
  storage/ndb/src/common/portlib/NdbTick.c
  storage/ndb/src/common/util/ndb_init.cpp

=== modified file 'storage/ndb/src/common/portlib/NdbTick.c'
--- a/storage/ndb/src/common/portlib/NdbTick.c	2008-06-09 11:57:17 +0000
+++ b/storage/ndb/src/common/portlib/NdbTick.c	2008-09-11 11:40:54 +0000
@@ -26,15 +26,34 @@
 #ifdef HAVE_CLOCK_GETTIME
 
 #ifdef CLOCK_MONOTONIC
-#define CLOCK CLOCK_MONOTONIC
+static clockid_t NdbTick_clk_id = CLOCK_MONOTONIC;
 #else
-#define CLOCK CLOCK_REALTIME
+static clockid_t NdbTick_clk_id = CLOCK_REALTIME;
 #endif
 
+void NdbTick_Init()
+{
+  struct timespec tick_time;
+  if (clock_gettime(NdbTick_clk_id, &tick_time) == 0)
+    return;
+#ifdef CLOCK_MONOTONIC
+  fprintf(stderr, "Failed to use CLOCK_MONOTONIC for clock_realtime,"
+          " errno= %u\n", errno);
+  fflush(stderr);
+  NdbTick_clk_id = CLOCK_REALTIME;
+  if (clock_gettime(NdbTick_clk_id, &tick_time) == 0)
+    return;
+#endif
+  fprintf(stderr, "Failed to use CLOCK_REALTIME for clock_realtime,"
+          " errno=%u.  Aborting\n", errno);
+  fflush(stderr);
+  abort();
+}
+
 NDB_TICKS NdbTick_CurrentMillisecond(void)
 {
   struct timespec tick_time;
-  clock_gettime(CLOCK, &tick_time);
+  clock_gettime(NdbTick_clk_id, &tick_time);
 
   return 
     ((NDB_TICKS)tick_time.tv_sec)  * ((NDB_TICKS)MILLISEC_PER_SEC) +
@@ -44,12 +63,16 @@ NDB_TICKS NdbTick_CurrentMillisecond(voi
 int 
 NdbTick_CurrentMicrosecond(NDB_TICKS * secs, Uint32 * micros){
   struct timespec t;
-  int res = clock_gettime(CLOCK, &t);
+  int res = clock_gettime(NdbTick_clk_id, &t);
   * secs   = t.tv_sec;
   * micros = t.tv_nsec / 1000;
   return res;
 }
 #else
+void NdbTick_Init()
+{
+}
+
 NDB_TICKS NdbTick_CurrentMillisecond(void)
 {
   struct timeval tick_time;

=== modified file 'storage/ndb/src/common/util/ndb_init.cpp'
--- a/storage/ndb/src/common/util/ndb_init.cpp	2008-06-09 11:57:17 +0000
+++ b/storage/ndb/src/common/util/ndb_init.cpp	2008-09-11 11:40:54 +0000
@@ -27,6 +27,7 @@ extern void destroy_event_logger(class E
 static int ndb_init_called = 0;
 
 extern "C" void NdbCondition_Init();
+extern "C" void NdbTick_Init();
 
 extern "C"
 {
@@ -46,7 +47,7 @@ ndb_init_internal()
       exit(1);
     }
   }
-
+  NdbTick_Init();
   NdbCondition_Init();
 }
 

Thread
bzr commit into mysql-5.1 branch (tomas.ulin:2696) Tomas Ulin15 Sep