91f9ee2ee62256134547dbdb13b4b6f49050f389
[olsrd.git] / src / scheduler.h
1 /*
2  * OLSR ad-hoc routing table management protocol
3  * Copyright (C) 2004 Andreas T√łnnesen (andreto@ifi.uio.no)
4  *
5  * This file is part of the olsr.org OLSR daemon.
6  *
7  * olsr.org is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * olsr.org is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with olsr.org; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  * 
21  * 
22  * $ Id $
23  *
24  */
25
26
27
28
29 #ifndef _OLSR_TIMER
30 #define _OLSR_TIMER
31
32 #include <pthread.h>
33
34
35 /* List entries */
36
37 /* Timeout entry */
38
39 struct timeout_entry
40 {
41   void (*function)();
42   struct timeout_entry *next;
43 };
44
45 /* Event entry */
46
47 struct event_entry
48 {
49   void (*function)();
50   float interval;
51   float since_last;
52   olsr_u8_t *trigger;
53   struct event_entry *next;
54 };
55
56
57 /* Lists */
58 struct timeout_entry *timeout_functions;
59
60 struct event_entry *event_functions;
61
62
63 /* The polling interval */
64 float sched_poll_interval;
65
66
67 /* mutex for thread */
68 extern pthread_mutex_t mutex;
69
70
71 /* EMISSION/HOLD INTERVALS */
72
73 float hello_int;
74 float hello_int_nw;
75 float tc_int;
76 float hna_int;
77 float polling_int;
78 float mid_int;
79 float will_int; /* Willingness update interval */
80
81 float max_jitter;
82
83 float topology_hold_time;
84 float neighbor_hold_time;
85 float neighbor_hold_time_nw;
86 float mid_hold_time;
87 float hna_hold_time;
88 float dup_hold_time;
89
90 int
91 init_scheduler(float);
92
93 int
94 olsr_register_timeout_function(void (*)());
95
96 int
97 olsr_remove_timeout_function(void (*)());
98
99 int
100 olsr_register_scheduler_event(void (*)(), float, float, olsr_u8_t *);
101
102 int
103 olsr_remove_scheduler_event(void (*)(), float, float, olsr_u8_t *);
104
105 void
106 start_scheduler(pthread_t *);
107
108 #endif