9 #ifndef TOR_SCHEDULER_H 10 #define TOR_SCHEDULER_H 14 #include "testsupport.h" 21 SCHEDULER_VANILLA = 1,
23 SCHEDULER_KIST_LITE = 3,
58 void (*free_all)(void);
63 void (*schedule)(void);
83 void (*on_new_consensus)(void);
89 void (*on_channel_free)(
const channel_t *);
95 void (*on_new_options)(void);
105 #define KIST_SCHED_RUN_INTERVAL_DEFAULT 10 107 #define KIST_SCHED_RUN_INTERVAL_MIN 0 109 #define KIST_SCHED_RUN_INTERVAL_MAX 100 118 void scheduler_init(
void);
139 #ifdef SCHEDULER_PRIVATE_ 149 #define SCHED_BUG(cond, chan) \ 150 (PREDICT_UNLIKELY(cond) ? \ 151 ((BUG(cond)) ? (scheduler_bug_occurred(chan), 1) : 0) : 0) 153 void scheduler_bug_occurred(
const channel_t *chan);
156 MOCK_DECL(
int, scheduler_compare_channels,
157 (
const void *c1_v,
const void *c2_v));
161 #ifdef TOR_UNIT_TESTS 165 void scheduler_touch_channel(
channel_t *chan);
172 #ifdef SCHEDULER_KIST_PRIVATE 176 typedef struct socket_table_ent_s {
177 HT_ENTRY(socket_table_ent_s) node;
188 } socket_table_ent_t;
190 typedef HT_HEAD(outbuf_table_s, outbuf_table_ent_s) outbuf_table_t;
192 MOCK_DECL(
int, channel_should_write_to_kernel,
193 (outbuf_table_t *table,
channel_t *chan));
195 MOCK_DECL(
void, update_socket_info_impl, (socket_table_ent_t *ent));
197 int scheduler_can_use_kist(
void);
198 void scheduler_kist_set_full_mode(
void);
199 void scheduler_kist_set_lite_mode(
void);
201 int kist_scheduler_run_interval(
void);
203 #ifdef TOR_UNIT_TESTS 204 extern int32_t sched_run_interval;
STATIC const scheduler_t * the_scheduler
Definition: scheduler.c:155
const char * get_scheduler_state_string(int scheduler_state)
Definition: scheduler.c:364
STATIC smartlist_t * channels_pending
Definition: scheduler.c:164
struct scheduler_s scheduler_t
scheduler_types_t
Definition: scheduler.h:19
smartlist_t * get_channels_pending(void)
Definition: scheduler.c:394
void scheduler_ev_active(void)
Definition: scheduler.c:595
void scheduler_free_all(void)
Definition: scheduler.c:482
MOCK_DECL(int, router_have_minimum_dir_info,(void))
Definition: container.h:18
STATIC struct mainloop_event_t * run_sched_ev
Definition: scheduler.c:170
Header file for channel.c.
Master header file for Tor-specific functionality.
Definition: scheduler.h:43
Definition: compat_time.h:33
void scheduler_notify_networkstatus_changed(void)
Definition: scheduler.c:465
void scheduler_ev_add(const struct timeval *next_run)
Definition: scheduler.c:582
void scheduler_channel_wants_writes(channel_t *chan)
Definition: scheduler.c:666
void scheduler_set_channel_state(channel_t *chan, int new_state)
Definition: scheduler.c:383
Definition: compat_libevent.c:310
void scheduler_conf_changed(void)
Definition: scheduler.c:450