Annotation of embedaddon/bird/sysdep/unix/timer.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  *     BIRD -- Unix Timers
        !             3:  *
        !             4:  *     (c) 1998 Martin Mares <mj@ucw.cz>
        !             5:  *
        !             6:  *     Can be freely distributed and used under the terms of the GNU GPL.
        !             7:  */
        !             8: 
        !             9: #ifndef _BIRD_TIMER_H_
        !            10: #define _BIRD_TIMER_H_
        !            11: 
        !            12: #include <time.h>
        !            13: 
        !            14: #include "lib/resource.h"
        !            15: 
        !            16: typedef time_t bird_clock_t;           /* Use instead of time_t */
        !            17: 
        !            18: typedef struct timer {
        !            19:   resource r;
        !            20:   void (*hook)(struct timer *);
        !            21:   void *data;
        !            22:   unsigned randomize;                  /* Amount of randomization */
        !            23:   unsigned recurrent;                  /* Timer recurrence */
        !            24:   node n;                              /* Internal link */
        !            25:   bird_clock_t expires;                        /* 0=inactive */
        !            26: } timer;
        !            27: 
        !            28: timer *tm_new(pool *);
        !            29: void tm_start(timer *, unsigned after);
        !            30: void tm_stop(timer *);
        !            31: void tm_dump_all(void);
        !            32: 
        !            33: extern bird_clock_t now;               /* Relative, monotonic time in seconds */
        !            34: extern bird_clock_t now_real;          /* Time in seconds since fixed known epoch */
        !            35: extern bird_clock_t boot_time;
        !            36: 
        !            37: static inline int
        !            38: tm_active(timer *t)
        !            39: {
        !            40:   return t->expires != 0;
        !            41: }
        !            42: 
        !            43: static inline bird_clock_t
        !            44: tm_remains(timer *t)
        !            45: {
        !            46:   return t->expires ? t->expires - now : 0;
        !            47: }
        !            48: 
        !            49: static inline void
        !            50: tm_start_max(timer *t, unsigned after)
        !            51: {
        !            52:   bird_clock_t rem = tm_remains(t);
        !            53:   tm_start(t, (rem > after) ? rem : after);
        !            54: }
        !            55: 
        !            56: static inline timer *
        !            57: tm_new_set(pool *p, void (*hook)(struct timer *), void *data, unsigned rand, unsigned rec)
        !            58: {
        !            59:   timer *t = tm_new(p);
        !            60:   t->hook = hook;
        !            61:   t->data = data;
        !            62:   t->randomize = rand;
        !            63:   t->recurrent = rec;
        !            64:   return t;
        !            65: }
        !            66: 
        !            67: 
        !            68: struct timeformat {
        !            69:   char *fmt1, *fmt2;
        !            70:   bird_clock_t limit;
        !            71: };
        !            72: 
        !            73: bird_clock_t tm_parse_date(char *);    /* Convert date to bird_clock_t */
        !            74: bird_clock_t tm_parse_datetime(char *);        /* Convert date to bird_clock_t */
        !            75: 
        !            76: #define TM_DATETIME_BUFFER_SIZE 32     /* Buffer size required by tm_format_datetime */
        !            77: void
        !            78: tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t);
        !            79: 
        !            80: #ifdef TIME_T_IS_64BIT
        !            81: #define TIME_INFINITY 0x7fffffffffffffff
        !            82: #else
        !            83: #ifdef TIME_T_IS_SIGNED
        !            84: #define TIME_INFINITY 0x7fffffff
        !            85: #else
        !            86: #define TIME_INFINITY 0xffffffff
        !            87: #endif
        !            88: #endif
        !            89: 
        !            90: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>