Change get_uptime() implementation 77/157677/3
authorAnatolii Nikulin <nikulin.a@samsung.com>
Fri, 17 Jul 2015 09:13:30 +0000 (12:13 +0300)
committerDmitry Kovalenko <d.kovalenko@samsung.com>
Mon, 27 Nov 2017 12:56:31 +0000 (12:56 +0000)
Change-Id: I513654249cbc529bec771ab24481e75df4cb3c59
Signed-off-by: Anatolii Nikulin <nikulin.a@samsung.com>
daemon/utils.c

index d66c966d18007019c3d9e4e715aeb4153e14956c..83c44ba7909d707a79fa65ae2701cd753c8b2e16 100644 (file)
@@ -44,6 +44,7 @@
 #include <fcntl.h>             // for open
 #include <grp.h>               // for setgroups
 #include <sys/wait.h> /* waitpid */
+#include <time.h>
 
 #include "daemon.h"
 #include "utils.h"
@@ -228,16 +229,14 @@ static char *dereference_tizen_exe_path(const char *path, char *resolved)
 
 float get_uptime(void)
 {
-       const char *LINUX_UPTIME_FILE = "/proc/uptime";
-       FILE *fp = fopen(LINUX_UPTIME_FILE, "r");
-       float uptime;
-       if (!fp)
-               return 0.0;
+       int ret;
+       struct timespec ts;
+       float uptime = 0.0;
 
-       if (fscanf(fp, "%f", &uptime) != 1)
-               uptime = 0.0;
+       ret = clock_gettime(CLOCK_BOOTTIME, &ts);
+       if (!ret)
+               uptime = ((float)ts.tv_sec + (ts.tv_nsec / 1000000000.0));
 
-       fclose(fp);
        return uptime;
 }