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>