diff options
author | David Goulet <dgoulet@torproject.org> | 2017-09-14 14:47:59 -0400 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2017-09-15 11:40:59 -0400 |
commit | 734dbfa590baf560741f0754bd81c07dfb829485 (patch) | |
tree | 4cf32837fd3823ac53b4244e6aab794a4a6eec46 /src/or/scheduler_vanilla.c | |
parent | bd34a0d30f754f3dd75199d915febe918d058f30 (diff) | |
download | tor-734dbfa590baf560741f0754bd81c07dfb829485.tar.gz tor-734dbfa590baf560741f0754bd81c07dfb829485.zip |
sched: Make the scheduler object static
Each type of scheduler implements its own static scheduler_t object and
returns a reference to it.
This commit also makes it a const pointer that is it can only change inside
the scheduler type subsystem but not outside for extra protection.
Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/or/scheduler_vanilla.c')
-rw-r--r-- | src/or/scheduler_vanilla.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/or/scheduler_vanilla.c b/src/or/scheduler_vanilla.c index 541ee80060..09653f445e 100644 --- a/src/or/scheduler_vanilla.c +++ b/src/or/scheduler_vanilla.c @@ -17,9 +17,6 @@ /* Maximum cells to flush in a single call to channel_flush_some_cells(); */ #define MAX_FLUSH_CELLS 1000 -/* Stores the vanilla scheduler function pointers. */ -static scheduler_t *vanilla_scheduler = NULL; - /***************************************************************************** * Externally called function implementations *****************************************************************************/ @@ -180,20 +177,20 @@ vanilla_scheduler_run(void) n_chans_before - n_chans_after, n_chans_before); } +/* Stores the vanilla scheduler function pointers. */ +static scheduler_t vanilla_scheduler = { + .free_all = NULL, + .on_channel_free = NULL, + .init = NULL, + .on_new_consensus = NULL, + .schedule = vanilla_scheduler_schedule, + .run = vanilla_scheduler_run, + .on_new_options = NULL, +}; + scheduler_t * get_vanilla_scheduler(void) { - if (!vanilla_scheduler) { - log_debug(LD_SCHED, "Initializing vanilla scheduler struct"); - vanilla_scheduler = tor_malloc_zero(sizeof(*vanilla_scheduler)); - vanilla_scheduler->free_all = NULL; - vanilla_scheduler->on_channel_free = NULL; - vanilla_scheduler->init = NULL; - vanilla_scheduler->on_new_consensus = NULL; - vanilla_scheduler->schedule = vanilla_scheduler_schedule; - vanilla_scheduler->run = vanilla_scheduler_run; - vanilla_scheduler->on_new_options = NULL; - } - return vanilla_scheduler; + return &vanilla_scheduler; } |