uptimeofday.c (735B)
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 8static unsigned long __offset; 9static struct timeval __tv; 10 11int 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 25unsigned long getuptimeofday_ms(void) 26{ 27 gettimeofday(&__tv, NULL); 28 29 return ((__tv.tv_sec - __offset) * 1000) + (__tv.tv_usec / 1000); 30} 31 32struct 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}