summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Enberg <penberg@kernel.org>2011-01-22 19:27:59 +0000
committerPekka Enberg <penberg@kernel.org>2011-01-22 19:27:59 +0000
commitaefd4df2e37bcda279b1f944208b0785c2807cd4 (patch)
treed117fff44ed6a72493b6933456de0ee018cf69c5
parent13d05c78647ef48069320716c4d52aa06ff9f83d (diff)
downloadclasspath-aefd4df2e37bcda279b1f944208b0785c2807cd4.tar.gz
Fix clock_gettime() fallback
As suggested by Ivan Maidanski: The clock_gettime(CLOCK_MONOTONIC) function may fail on some machines (even if _POSIX_MONOTONIC_CLOCK has been defined during compilation), so it's better to silently fall-back to gettimeofday() in that case. Reviewed-by: Andrew Haley <aph@redhat.com> 2011-01-22 Pekka Enberg <penberg@kernel.org> * native/jni/java-lang/java_lang_VMSystem.c (Java_java_lang_VMSystem_nanoTime): Fallback to gettimeofday() if clock_gettime(CLOCK_MONOTONIC) fails.
-rw-r--r--ChangeLog6
-rw-r--r--native/jni/java-lang/java_lang_VMSystem.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 403cf42f1..232821cca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,12 @@
2011-01-22 Pekka Enberg <penberg@kernel.org>
* native/jni/java-lang/java_lang_VMSystem.c
+ (Java_java_lang_VMSystem_nanoTime): Fallback to
+ gettimeofday() if clock_gettime(CLOCK_MONOTONIC) fails.
+
+2011-01-22 Pekka Enberg <penberg@kernel.org>
+
+ * native/jni/java-lang/java_lang_VMSystem.c
(currentTimeMillis): Rename currentTimeMillis to
currentTimeMicros to reflect what the function returns.
diff --git a/native/jni/java-lang/java_lang_VMSystem.c b/native/jni/java-lang/java_lang_VMSystem.c
index 44f789fc0..047c2b394 100644
--- a/native/jni/java-lang/java_lang_VMSystem.c
+++ b/native/jni/java-lang/java_lang_VMSystem.c
@@ -146,9 +146,7 @@ Java_java_lang_VMSystem_nanoTime
struct timespec tp;
if (clock_gettime (CLOCK_MONOTONIC, &tp) == -1) {
- char error[64];
- snprintf(error, 64, "clock_gettime call failed: %s.", strerror(errno));
- (*env)->FatalError (env, error);
+ return currentTimeMicros(env) * (jlong)1000;
}
result = (jlong) tp.tv_sec;