]> git.ipfire.org Git - thirdparty/bird.git/blob - lib/event.h
Kernel: Do not use route replace when krt_metric differs
[thirdparty/bird.git] / lib / event.h
1 /*
2 * BIRD Library -- Event Processing
3 *
4 * (c) 1999 Martin Mares <mj@ucw.cz>
5 *
6 * Can be freely distributed and used under the terms of the GNU GPL.
7 */
8
9 #ifndef _BIRD_EVENT_H_
10 #define _BIRD_EVENT_H_
11
12 #include "lib/resource.h"
13
14 typedef struct event {
15 resource r;
16 void (*hook)(void *);
17 void *data;
18 node n; /* Internal link */
19 } event;
20
21 typedef list event_list;
22
23 extern event_list global_event_list;
24 extern event_list global_work_list;
25
26 event *ev_new(pool *);
27 void ev_run(event *);
28 #define ev_init_list(el) init_list(el)
29 void ev_enqueue(event_list *, event *);
30 void ev_schedule(event *);
31 void ev_schedule_work(event *);
32 void ev_postpone(event *);
33 int ev_run_list(event_list *);
34 int ev_run_list_limited(event_list *, uint);
35
36 static inline int
37 ev_active(event *e)
38 {
39 return e->n.next != NULL;
40 }
41
42 static inline event*
43 ev_new_init(pool *p, void (*hook)(void *), void *data)
44 {
45 event *e = ev_new(p);
46 e->hook = hook;
47 e->data = data;
48 return e;
49 }
50
51
52 #endif