123456789101112131415161718192021222324252627282930 |
- /* 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;
- }
|