Commit | Line | Data |
---|---|---|
3b7c5e8a DL |
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 | } |