diff options
Diffstat (limited to 'toolbox/uptime.c')
-rw-r--r-- | toolbox/uptime.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/toolbox/uptime.c b/toolbox/uptime.c index 1c312b0..3fb4606 100644 --- a/toolbox/uptime.c +++ b/toolbox/uptime.c @@ -54,24 +54,35 @@ 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; return -1; } -int uptime_main(int argc, char *argv[]) +int uptime_main(int argc __attribute__((unused)), + char *argv[] __attribute__((unused))) { float up_time, idle_time; char up_string[100], idle_string[100], sleep_string[100]; |