mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-23 10:11:53 +00:00
7152e5efbb
Also removed the lib-dir merging with sysdep. Updated #include's accordingly. Fixed make doc on recent Debian together with moving generated doc into objdir. Moved Makefile.in into root dir Retired all.o and birdlib.a Linking the final binaries directly from all the .o files.
100 lines
1.8 KiB
C
100 lines
1.8 KiB
C
/*
|
|
* BIRD -- I/O and event loop
|
|
*
|
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
*/
|
|
|
|
#ifndef _BIRD_BFD_IO_H_
|
|
#define _BIRD_BFD_IO_H_
|
|
|
|
#include "nest/bird.h"
|
|
#include "lib/lists.h"
|
|
#include "lib/resource.h"
|
|
#include "lib/event.h"
|
|
#include "lib/socket.h"
|
|
// #include "sysdep/unix/timer.h"
|
|
|
|
|
|
typedef struct timer2
|
|
{
|
|
resource r;
|
|
void (*hook)(struct timer2 *);
|
|
void *data;
|
|
|
|
btime expires; /* 0=inactive */
|
|
uint randomize; /* Amount of randomization */
|
|
uint recurrent; /* Timer recurrence */
|
|
|
|
int index;
|
|
} timer2;
|
|
|
|
|
|
btime current_time(void);
|
|
|
|
void ev2_schedule(event *e);
|
|
|
|
|
|
timer2 *tm2_new(pool *p);
|
|
void tm2_set(timer2 *t, btime when);
|
|
void tm2_start(timer2 *t, btime after);
|
|
void tm2_stop(timer2 *t);
|
|
|
|
static inline int
|
|
tm2_active(timer2 *t)
|
|
{
|
|
return t->expires != 0;
|
|
}
|
|
|
|
static inline btime
|
|
tm2_remains(timer2 *t)
|
|
{
|
|
btime now = current_time();
|
|
return (t->expires > now) ? (t->expires - now) : 0;
|
|
}
|
|
|
|
static inline timer2 *
|
|
tm2_new_init(pool *p, void (*hook)(struct timer2 *), void *data, uint rec, uint rand)
|
|
{
|
|
timer2 *t = tm2_new(p);
|
|
t->hook = hook;
|
|
t->data = data;
|
|
t->recurrent = rec;
|
|
t->randomize = rand;
|
|
return t;
|
|
}
|
|
|
|
static inline void
|
|
tm2_set_max(timer2 *t, btime when)
|
|
{
|
|
if (when > t->expires)
|
|
tm2_set(t, when);
|
|
}
|
|
|
|
/*
|
|
static inline void
|
|
tm2_start_max(timer2 *t, btime after)
|
|
{
|
|
btime rem = tm2_remains(t);
|
|
tm2_start(t, MAX_(rem, after));
|
|
}
|
|
*/
|
|
|
|
|
|
void sk_start(sock *s);
|
|
void sk_stop(sock *s);
|
|
|
|
|
|
|
|
struct birdloop *birdloop_new(void);
|
|
void birdloop_start(struct birdloop *loop);
|
|
void birdloop_stop(struct birdloop *loop);
|
|
void birdloop_free(struct birdloop *loop);
|
|
|
|
void birdloop_enter(struct birdloop *loop);
|
|
void birdloop_leave(struct birdloop *loop);
|
|
void birdloop_mask_wakeups(struct birdloop *loop);
|
|
void birdloop_unmask_wakeups(struct birdloop *loop);
|
|
|
|
|
|
#endif /* _BIRD_BFD_IO_H_ */
|