sched: Always initialize scheduler_last_run to now

Because our monotonic time interface doesn't play well with value set to 0,
always initialize to now() the scheduler_last_run at init() of the KIST
scheduler.

Fixes #23696

Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet 2017-09-29 14:07:55 -04:00
parent fc6c0b46fb
commit 070064de89
2 changed files with 13 additions and 0 deletions

3
changes/bug23696 Normal file
View File

@ -0,0 +1,3 @@
o Minor bugfixes (scheduler, kist):
- Properly initialize the scheduler last run time counter so it is not 0
at the first tick. Fixes bug 23696; bugfix on 0.3.2.1-alpha.

View File

@ -490,6 +490,16 @@ kist_scheduler_on_new_options(void)
static void static void
kist_scheduler_init(void) kist_scheduler_init(void)
{ {
/* When initializing the scheduler, the last run could be 0 because it is
* declared static or a value in the past that was set when it was last
* used. In both cases, we want to initialize it to now so we don't risk
* using the value 0 which doesn't play well with our monotonic time
* interface.
*
* One side effect is that the first scheduler run will be at the next tick
* that is in now + 10 msec (KIST_SCHED_RUN_INTERVAL_DEFAULT) by default. */
monotime_get(&scheduler_last_run);
kist_scheduler_on_new_options(); kist_scheduler_on_new_options();
IF_BUG_ONCE(sched_run_interval == 0) { IF_BUG_ONCE(sched_run_interval == 0) {
log_warn(LD_SCHED, "We are initing the KIST scheduler and noticed the " log_warn(LD_SCHED, "We are initing the KIST scheduler and noticed the "