199ca880aSopenharmony_ci/*** 299ca880aSopenharmony_ci This file is part of eudev, forked from systemd. 399ca880aSopenharmony_ci 499ca880aSopenharmony_ci Copyright 2010 Lennart Poettering 599ca880aSopenharmony_ci 699ca880aSopenharmony_ci systemd is free software; you can redistribute it and/or modify it 799ca880aSopenharmony_ci under the terms of the GNU Lesser General Public License as published by 899ca880aSopenharmony_ci the Free Software Foundation; either version 2.1 of the License, or 999ca880aSopenharmony_ci (at your option) any later version. 1099ca880aSopenharmony_ci 1199ca880aSopenharmony_ci systemd is distributed in the hope that it will be useful, but 1299ca880aSopenharmony_ci WITHOUT ANY WARRANTY; without even the implied warranty of 1399ca880aSopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1499ca880aSopenharmony_ci Lesser General Public License for more details. 1599ca880aSopenharmony_ci 1699ca880aSopenharmony_ci You should have received a copy of the GNU Lesser General Public License 1799ca880aSopenharmony_ci along with systemd; If not, see <http://www.gnu.org/licenses/>. 1899ca880aSopenharmony_ci***/ 1999ca880aSopenharmony_ci 2099ca880aSopenharmony_ci#pragma once 2199ca880aSopenharmony_ci 2299ca880aSopenharmony_ci#include <inttypes.h> 2399ca880aSopenharmony_ci 2499ca880aSopenharmony_citypedef uint64_t usec_t; 2599ca880aSopenharmony_citypedef uint64_t nsec_t; 2699ca880aSopenharmony_ci 2799ca880aSopenharmony_ci#define USEC_FMT "%" PRIu64 2899ca880aSopenharmony_ci 2999ca880aSopenharmony_ci#include "macro.h" 3099ca880aSopenharmony_ci 3199ca880aSopenharmony_citypedef struct dual_timestamp { 3299ca880aSopenharmony_ci usec_t realtime; 3399ca880aSopenharmony_ci usec_t monotonic; 3499ca880aSopenharmony_ci} dual_timestamp; 3599ca880aSopenharmony_ci 3699ca880aSopenharmony_ci#define USEC_INFINITY ((usec_t) -1) 3799ca880aSopenharmony_ci#define NSEC_INFINITY ((nsec_t) -1) 3899ca880aSopenharmony_ci 3999ca880aSopenharmony_ci#define MSEC_PER_SEC 1000ULL 4099ca880aSopenharmony_ci#define USEC_PER_SEC ((usec_t) 1000000ULL) 4199ca880aSopenharmony_ci#define USEC_PER_MSEC ((usec_t) 1000ULL) 4299ca880aSopenharmony_ci#define NSEC_PER_SEC ((nsec_t) 1000000000ULL) 4399ca880aSopenharmony_ci#define NSEC_PER_MSEC ((nsec_t) 1000000ULL) 4499ca880aSopenharmony_ci#define NSEC_PER_USEC ((nsec_t) 1000ULL) 4599ca880aSopenharmony_ci 4699ca880aSopenharmony_ci#define USEC_PER_MINUTE ((usec_t) (60ULL*USEC_PER_SEC)) 4799ca880aSopenharmony_ci#define NSEC_PER_MINUTE ((nsec_t) (60ULL*NSEC_PER_SEC)) 4899ca880aSopenharmony_ci#define USEC_PER_HOUR ((usec_t) (60ULL*USEC_PER_MINUTE)) 4999ca880aSopenharmony_ci#define NSEC_PER_HOUR ((nsec_t) (60ULL*NSEC_PER_MINUTE)) 5099ca880aSopenharmony_ci#define USEC_PER_DAY ((usec_t) (24ULL*USEC_PER_HOUR)) 5199ca880aSopenharmony_ci#define NSEC_PER_DAY ((nsec_t) (24ULL*NSEC_PER_HOUR)) 5299ca880aSopenharmony_ci#define USEC_PER_WEEK ((usec_t) (7ULL*USEC_PER_DAY)) 5399ca880aSopenharmony_ci#define NSEC_PER_WEEK ((nsec_t) (7ULL*NSEC_PER_DAY)) 5499ca880aSopenharmony_ci#define USEC_PER_MONTH ((usec_t) (2629800ULL*USEC_PER_SEC)) 5599ca880aSopenharmony_ci#define NSEC_PER_MONTH ((nsec_t) (2629800ULL*NSEC_PER_SEC)) 5699ca880aSopenharmony_ci#define USEC_PER_YEAR ((usec_t) (31557600ULL*USEC_PER_SEC)) 5799ca880aSopenharmony_ci#define NSEC_PER_YEAR ((nsec_t) (31557600ULL*NSEC_PER_SEC)) 5899ca880aSopenharmony_ci 5999ca880aSopenharmony_ci#define FORMAT_TIMESPAN_MAX 64 6099ca880aSopenharmony_ci 6199ca880aSopenharmony_ciusec_t now(clockid_t clock); 6299ca880aSopenharmony_ci 6399ca880aSopenharmony_ciusec_t timespec_load(const struct timespec *ts) _pure_; 6499ca880aSopenharmony_cistruct timespec *timespec_store(struct timespec *ts, usec_t u); 6599ca880aSopenharmony_ci 6699ca880aSopenharmony_cistruct timeval *timeval_store(struct timeval *tv, usec_t u); 6799ca880aSopenharmony_cichar *format_timespan(char *buf, size_t l, usec_t t, usec_t accuracy); 68