File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / bird / proto / bfd / io.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Aug 22 12:33:54 2017 UTC (6 years, 10 months ago) by misho
Branches: bird, MAIN
CVS tags: v1_6_8p3, v1_6_3p0, v1_6_3, HEAD
bird 1.6.3

    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>