diff options
Diffstat (limited to 'sysdep/unix/timer.h')
-rw-r--r-- | sysdep/unix/timer.h | 91 |
1 files changed, 33 insertions, 58 deletions
diff --git a/sysdep/unix/timer.h b/sysdep/unix/timer.h index aa3ed143..1c4f6e3b 100644 --- a/sysdep/unix/timer.h +++ b/sysdep/unix/timer.h @@ -11,58 +11,38 @@ #include <time.h> -#include "lib/resource.h" - -typedef time_t bird_clock_t; /* Use instead of time_t */ - -typedef struct timer { - resource r; - void (*hook)(struct timer *); - void *data; - uint randomize; /* Amount of randomization */ - uint recurrent; /* Timer recurrence */ - node n; /* Internal link */ - bird_clock_t expires; /* 0=inactive */ -} timer; - -timer *tm_new(pool *); -void tm_start(timer *, uint after); -void tm_stop(timer *); -void tm_dump_all(void); - -extern bird_clock_t now; /* Relative, monotonic time in seconds */ -extern bird_clock_t now_real; /* Time in seconds since fixed known epoch */ -extern bird_clock_t boot_time; - -static inline int -tm_active(timer *t) -{ - return t->expires != 0; -} - -static inline bird_clock_t -tm_remains(timer *t) -{ - return t->expires ? t->expires - now : 0; -} - -static inline void -tm_start_max(timer *t, bird_clock_t after) -{ - bird_clock_t rem = tm_remains(t); - tm_start(t, (rem > after) ? rem : after); -} - -static inline timer * -tm_new_set(pool *p, void (*hook)(struct timer *), void *data, uint rand, uint rec) -{ - timer *t = tm_new(p); - t->hook = hook; - t->data = data; - t->randomize = rand; - t->recurrent = rec; - return t; -} +#include "lib/birdlib.h" +#include "lib/timer.h" + + +typedef struct timer2 timer; + +static inline timer *tm_new(pool *p) +{ return (void *) tm2_new(p); } + +static inline void tm_start(timer *t, bird_clock_t after) +{ tm2_start(t, after S_); } + +static inline void tm_stop(timer *t) +{ tm2_stop(t); } + +// void tm_dump_all(void); + +//extern bird_clock_t now; /* Relative, monotonic time in seconds */ +//extern bird_clock_t now_real; /* Time in seconds since fixed known epoch */ +//extern bird_clock_t boot_time; + +static inline int tm_active(timer *t) +{ return tm2_active(t); } + +static inline bird_clock_t tm_remains(timer *t) +{ return tm2_remains(t) TO_S; } + +static inline void tm_start_max(timer *t, bird_clock_t after) +{ tm2_start_max(t, after S_); } + +static inline timer * tm_new_set(pool *p, void (*hook)(timer *), void *data, uint rand, uint rec) +{ return tm2_new_init(p, hook, data, rec S_, rand S_); } struct timeformat { @@ -77,12 +57,7 @@ bird_clock_t tm_parse_datetime(char *); /* Convert date to bird_clock_t */ void tm_format_datetime(char *x, struct timeformat *fmt_spec, bird_clock_t t); -#define TIME_T_IS_64BIT (sizeof(time_t) == 8) -#define TIME_T_IS_SIGNED ((time_t) -1 < 0) +#define TIME_INFINITY ((s64) 0x7fffffffffffffff) -#define TIME_INFINITY \ - ((time_t) (TIME_T_IS_SIGNED ? \ - (TIME_T_IS_64BIT ? 0x7fffffffffffffff : 0x7fffffff): \ - (TIME_T_IS_64BIT ? 0xffffffffffffffff : 0xffffffff))) #endif |