Annotation of embedaddon/bird/proto/bfd/io.h, revision 1.1
1.1 ! misho 1: /*
! 2: * BIRD -- I/O and event loop
! 3: *
! 4: * Can be freely distributed and used under the terms of the GNU GPL.
! 5: */
! 6:
! 7: #ifndef _BIRD_BFD_IO_H_
! 8: #define _BIRD_BFD_IO_H_
! 9:
! 10: #include "nest/bird.h"
! 11: #include "lib/lists.h"
! 12: #include "lib/resource.h"
! 13: #include "lib/event.h"
! 14: #include "lib/socket.h"
! 15: // #include "lib/timer.h"
! 16:
! 17:
! 18: typedef struct timer2
! 19: {
! 20: resource r;
! 21: void (*hook)(struct timer2 *);
! 22: void *data;
! 23:
! 24: btime expires; /* 0=inactive */
! 25: uint randomize; /* Amount of randomization */
! 26: uint recurrent; /* Timer recurrence */
! 27:
! 28: int index;
! 29: } timer2;
! 30:
! 31:
! 32: btime current_time(void);
! 33:
! 34: void ev2_schedule(event *e);
! 35:
! 36:
! 37: timer2 *tm2_new(pool *p);
! 38: void tm2_set(timer2 *t, btime when);
! 39: void tm2_start(timer2 *t, btime after);
! 40: void tm2_stop(timer2 *t);
! 41:
! 42: static inline int
! 43: tm2_active(timer2 *t)
! 44: {
! 45: return t->expires != 0;
! 46: }
! 47:
! 48: static inline btime
! 49: tm2_remains(timer2 *t)
! 50: {
! 51: btime now = current_time();
! 52: return (t->expires > now) ? (t->expires - now) : 0;
! 53: }
! 54:
! 55: static inline timer2 *
! 56: tm2_new_init(pool *p, void (*hook)(struct timer2 *), void *data, uint rec, uint rand)
! 57: {
! 58: timer2 *t = tm2_new(p);
! 59: t->hook = hook;
! 60: t->data = data;
! 61: t->recurrent = rec;
! 62: t->randomize = rand;
! 63: return t;
! 64: }
! 65:
! 66: static inline void
! 67: tm2_set_max(timer2 *t, btime when)
! 68: {
! 69: if (when > t->expires)
! 70: tm2_set(t, when);
! 71: }
! 72:
! 73: /*
! 74: static inline void
! 75: tm2_start_max(timer2 *t, btime after)
! 76: {
! 77: btime rem = tm2_remains(t);
! 78: tm2_start(t, MAX_(rem, after));
! 79: }
! 80: */
! 81:
! 82:
! 83: void sk_start(sock *s);
! 84: void sk_stop(sock *s);
! 85:
! 86:
! 87:
! 88: struct birdloop *birdloop_new(void);
! 89: void birdloop_start(struct birdloop *loop);
! 90: void birdloop_stop(struct birdloop *loop);
! 91: void birdloop_free(struct birdloop *loop);
! 92:
! 93: void birdloop_enter(struct birdloop *loop);
! 94: void birdloop_leave(struct birdloop *loop);
! 95: void birdloop_mask_wakeups(struct birdloop *loop);
! 96: void birdloop_unmask_wakeups(struct birdloop *loop);
! 97:
! 98:
! 99: #endif /* _BIRD_BFD_IO_H_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>