blob: 529f8bd5619c412760759b8697c69b49649ee16e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/* Copyright 2019 SiFive, Inc */
/* SPDX-License-Identifier: Apache-2.0 */
#include <metal/time.h>
#include <metal/timer.h>
int metal_gettimeofday(struct timeval *tp, void *tzp)
{
int rv;
unsigned long long mcc, timebase;
if ((rv = metal_timer_get_cyclecount(0, &mcc))) {
return -1;
}
if ((rv = metal_timer_get_timebase_frequency(0, &timebase))) {
return -1;
}
tp->tv_sec = mcc / timebase;
tp->tv_usec = mcc % timebase * 1000000 / timebase;
return 0;
}
time_t metal_time (void)
{
struct timeval now;
if (metal_gettimeofday(&now, NULL) < 0)
now.tv_sec = (time_t) -1;
return now.tv_sec;
}
|