137241896SHiroki Sato /* $KAME: timer.h,v 1.5 2002/05/31 13:30:38 jinmei Exp $ */ 237241896SHiroki Sato 3*8a16b7a1SPedro F. Giffuni /*- 4*8a16b7a1SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 5*8a16b7a1SPedro F. Giffuni * 637241896SHiroki Sato * Copyright (C) 1998 WIDE Project. 737241896SHiroki Sato * All rights reserved. 837241896SHiroki Sato * 937241896SHiroki Sato * Redistribution and use in source and binary forms, with or without 1037241896SHiroki Sato * modification, are permitted provided that the following conditions 1137241896SHiroki Sato * are met: 1237241896SHiroki Sato * 1. Redistributions of source code must retain the above copyright 1337241896SHiroki Sato * notice, this list of conditions and the following disclaimer. 1437241896SHiroki Sato * 2. Redistributions in binary form must reproduce the above copyright 1537241896SHiroki Sato * notice, this list of conditions and the following disclaimer in the 1637241896SHiroki Sato * documentation and/or other materials provided with the distribution. 1737241896SHiroki Sato * 3. Neither the name of the project nor the names of its contributors 1837241896SHiroki Sato * may be used to endorse or promote products derived from this software 1937241896SHiroki Sato * without specific prior written permission. 2037241896SHiroki Sato * 2137241896SHiroki Sato * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 2237241896SHiroki Sato * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2337241896SHiroki Sato * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2437241896SHiroki Sato * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 2537241896SHiroki Sato * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2637241896SHiroki Sato * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2737241896SHiroki Sato * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2837241896SHiroki Sato * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2937241896SHiroki Sato * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3037241896SHiroki Sato * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3137241896SHiroki Sato * SUCH DAMAGE. 3237241896SHiroki Sato */ 3337241896SHiroki Sato 3437241896SHiroki Sato #define SSBUFLEN 1024 3537241896SHiroki Sato 367d26db17SHiroki Sato #define TS_CMP(tsp, usp, cmp) \ 377d26db17SHiroki Sato (((tsp)->tv_sec == (usp)->tv_sec) ? \ 387d26db17SHiroki Sato ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \ 397d26db17SHiroki Sato ((tsp)->tv_sec cmp (usp)->tv_sec)) 407d26db17SHiroki Sato #define TS_ADD(tsp, usp, vsp) \ 417d26db17SHiroki Sato do { \ 427d26db17SHiroki Sato (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \ 437d26db17SHiroki Sato (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \ 447d26db17SHiroki Sato if ((vsp)->tv_nsec >= 1000000000L) { \ 457d26db17SHiroki Sato (vsp)->tv_sec++; \ 467d26db17SHiroki Sato (vsp)->tv_nsec -= 1000000000L; \ 477d26db17SHiroki Sato } \ 487d26db17SHiroki Sato } while (0) 497d26db17SHiroki Sato #define TS_SUB(tsp, usp, vsp) \ 507d26db17SHiroki Sato do { \ 517d26db17SHiroki Sato (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ 527d26db17SHiroki Sato (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \ 537d26db17SHiroki Sato if ((vsp)->tv_nsec < 0) { \ 547d26db17SHiroki Sato (vsp)->tv_sec--; \ 557d26db17SHiroki Sato (vsp)->tv_nsec += 1000000000L; \ 567d26db17SHiroki Sato } \ 577d26db17SHiroki Sato } while (0) 5837241896SHiroki Sato 597d26db17SHiroki Sato struct timespec *rtadvd_timer_rest(struct rtadvd_timer *); 6037241896SHiroki Sato char *sec2str(uint32_t, char *buf); 61