diff options
Diffstat (limited to 'core/jni/android_os_SystemClock.cpp')
-rw-r--r-- | core/jni/android_os_SystemClock.cpp | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/core/jni/android_os_SystemClock.cpp b/core/jni/android_os_SystemClock.cpp index 5f4d570..6247844 100644 --- a/core/jni/android_os_SystemClock.cpp +++ b/core/jni/android_os_SystemClock.cpp @@ -19,13 +19,6 @@ * System clock functions. */ -#ifdef HAVE_ANDROID_OS -#include <linux/ioctl.h> -#include <linux/rtc.h> -#include <utils/Atomic.h> -#include <linux/android_alarm.h> -#endif - #include <sys/time.h> #include <limits.h> #include <fcntl.h> @@ -43,109 +36,6 @@ namespace android { -static int setCurrentTimeMillisAlarmDriver(struct timeval *tv) -{ - struct timespec ts; - int fd; - int res; - - fd = open("/dev/alarm", O_RDWR); - if(fd < 0) { - ALOGV("Unable to open alarm driver: %s\n", strerror(errno)); - return -1; - } - ts.tv_sec = tv->tv_sec; - ts.tv_nsec = tv->tv_usec * 1000; - res = ioctl(fd, ANDROID_ALARM_SET_RTC, &ts); - if (res < 0) - ALOGV("ANDROID_ALARM_SET_RTC ioctl failed: %s\n", strerror(errno)); - close(fd); - return res; -} - -static int setCurrentTimeMillisRtc(struct timeval *tv) -{ - struct rtc_time rtc; - struct tm tm, *gmtime_res; - int fd; - int res; - - fd = open("/dev/rtc0", O_RDWR); - if (fd < 0) { - ALOGV("Unable to open RTC driver: %s\n", strerror(errno)); - return -1; - } - - res = settimeofday(tv, NULL); - if (res < 0) { - ALOGV("settimeofday() failed: %s\n", strerror(errno)); - goto done; - } - - gmtime_res = gmtime_r(&tv->tv_sec, &tm); - if (!gmtime_res) { - ALOGV("gmtime_r() failed: %s\n", strerror(errno)); - res = -1; - goto done; - } - - memset(&rtc, 0, sizeof(rtc)); - rtc.tm_sec = tm.tm_sec; - rtc.tm_min = tm.tm_min; - rtc.tm_hour = tm.tm_hour; - rtc.tm_mday = tm.tm_mday; - rtc.tm_mon = tm.tm_mon; - rtc.tm_year = tm.tm_year; - rtc.tm_wday = tm.tm_wday; - rtc.tm_yday = tm.tm_yday; - rtc.tm_isdst = tm.tm_isdst; - res = ioctl(fd, RTC_SET_TIME, &rtc); - if (res < 0) - ALOGV("RTC_SET_TIME ioctl failed: %s\n", strerror(errno)); -done: - close(fd); - return res; -} - -/* - * Set the current time. This only works when running as root. - */ -static int setCurrentTimeMillis(int64_t millis) -{ - struct timeval tv; - int ret; - - if (millis <= 0 || millis / 1000LL >= INT_MAX) { - return -1; - } - - tv.tv_sec = (time_t) (millis / 1000LL); - tv.tv_usec = (suseconds_t) ((millis % 1000LL) * 1000LL); - - ALOGD("Setting time of day to sec=%d\n", (int) tv.tv_sec); - - ret = setCurrentTimeMillisAlarmDriver(&tv); - if (ret < 0) - ret = setCurrentTimeMillisRtc(&tv); - - if(ret < 0) { - ALOGW("Unable to set rtc to %ld: %s\n", tv.tv_sec, strerror(errno)); - ret = -1; - } - return ret; -} - -/* - * native public static void setCurrentTimeMillis(long millis) - * - * Set the current time. This only works when running as root. - */ -static jboolean android_os_SystemClock_setCurrentTimeMillis(JNIEnv* env, - jobject clazz, jlong millis) -{ - return (setCurrentTimeMillis(millis) == 0); -} - /* * native public static long uptimeMillis(); */ @@ -230,8 +120,6 @@ static jlong android_os_SystemClock_elapsedRealtimeNano(JNIEnv* env, */ static JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ - { "setCurrentTimeMillis", "(J)Z", - (void*) android_os_SystemClock_setCurrentTimeMillis }, { "uptimeMillis", "()J", (void*) android_os_SystemClock_uptimeMillis }, { "elapsedRealtime", "()J", |