#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 Ulin | 15 Sep |