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 | |