Annotation of embedaddon/bird/proto/bfd/io.h, revision 1.1.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>