1 // SPDX-License-Identifier: LGPL-2.1+ 2 // Copyright (C) 2022, Linaro Ltd - Daniel Lezcano <daniel.lezcano@linaro.org> 3 #include <stdio.h> 4 #include <sys/time.h> 5 #include <linux/sysinfo.h> 6 #include "thermal-tools.h" 7 8 static unsigned long __offset; 9 static struct timeval __tv; 10 11 int uptimeofday_init(void) 12 { 13 struct sysinfo info; 14 15 if (sysinfo(&info)) 16 return -1; 17 18 gettimeofday(&__tv, NULL); 19 20 __offset = __tv.tv_sec - info.uptime; 21 22 return 0; 23 } 24 25 unsigned long getuptimeofday_ms(void) 26 { 27 gettimeofday(&__tv, NULL); 28 29 return ((__tv.tv_sec - __offset) * 1000) + (__tv.tv_usec / 1000); 30 } 31 32 struct timespec msec_to_timespec(int msec) 33 { 34 struct timespec tv = { 35 .tv_sec = (msec / 1000), 36 .tv_nsec = (msec % 1000) * 1000000, 37 }; 38 39 return tv; 40 } 41