From fa66f1e49458e7745511416d72ac15c190a13e6f Mon Sep 17 00:00:00 2001 From: Greg Hackmann Date: Tue, 17 Dec 2013 13:57:28 -0800 Subject: [PATCH] toolbox: uptime: use clock_gettime() on devices without /dev/alarm Change-Id: Id7287ca179cc0b8390c054803a25a961dd550a34 Signed-off-by: Greg Hackmann --- toolbox/uptime.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/toolbox/uptime.c b/toolbox/uptime.c index 455e7be44..3fb46061d 100644 --- a/toolbox/uptime.c +++ b/toolbox/uptime.c @@ -54,17 +54,27 @@ static void format_time(int time, char* buffer) { sprintf(buffer, "%02d:%02d:%02d", hours, minutes, seconds); } -int64_t elapsedRealtime() +static int elapsedRealtimeAlarm(struct timespec *ts) { - struct timespec ts; int fd, result; fd = open("/dev/alarm", O_RDONLY); if (fd < 0) return fd; - result = ioctl(fd, ANDROID_ALARM_GET_TIME(ANDROID_ALARM_ELAPSED_REALTIME), &ts); - close(fd); + result = ioctl(fd, ANDROID_ALARM_GET_TIME(ANDROID_ALARM_ELAPSED_REALTIME), ts); + close(fd); + + return result; +} + +int64_t elapsedRealtime() +{ + struct timespec ts; + + int result = elapsedRealtimeAlarm(&ts); + if (result < 0) + result = clock_gettime(CLOCK_BOOTTIME, &ts); if (result == 0) return ts.tv_sec;