/* * The Rin Library – time module * * Copyright (C) 2017 Gediminas Jakutis * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2.1 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef LIBRIN_TIME_INCLUDED #define LIBRIN_TIME_INCLUDED #include /* benchmarking related */ struct rin_bench_result { struct timespec wall; struct timeval system; struct timeval user; struct timeval total; }; int rin_bench_start(void); int rin_bench_stop(struct rin_bench_result *res); /* time data types related */ struct timespec rin_time_add(const struct timespec * const a, const struct timespec * const b); struct timespec rin_time_sub(const struct timespec * const a, const struct timespec * const b); struct timespec rin_time_normalize(const struct timespec * const t); struct timeval rin_timeval_add(const struct timeval * const a, const struct timeval * const b); struct timeval rin_timeval_sub(const struct timeval * const a, const struct timeval * const b); struct timeval rin_timeval_normalize(const struct timeval * const t); long int rin_time_cmp(const struct timespec * const a, const struct timespec * const b); long int rin_timeval_cmp(const struct timeval * const a, const struct timeval * const b); unsigned int rin_time_cmp_less(const struct timespec * const a, const struct timespec * const b); unsigned int rin_time_cmp_more(const struct timespec * const a, const struct timespec * const b); unsigned int rin_time_cmp_lessequal(const struct timespec * const a, const struct timespec * const b); unsigned int rin_time_cmp_moreequal(const struct timespec * const a, const struct timespec * const b); unsigned int rin_time_cmp_equal(const struct timespec * const a, const struct timespec * const b); unsigned int rin_time_cmp_nonequal(const struct timespec * const a, const struct timespec * const b); unsigned int rin_timeval_cmp_less(const struct timeval * const a, const struct timeval * const b); unsigned int rin_timeval_cmp_more(const struct timeval * const a, const struct timeval * const b); unsigned int rin_timeval_cmp_lessequal(const struct timeval * const a, const struct timeval * const b); unsigned int rin_timeval_cmp_moreequal(const struct timeval * const a, const struct timeval * const b); unsigned int rin_timeval_cmp_equal(const struct timeval * const a, const struct timeval * const b); unsigned int rin_timeval_cmp_nonequal(const struct timeval * const a, const struct timeval * const b); #endif /* LIBRIN_TIME_INCLUDED */