sched: add function to remove all timers and descriptors

This allows a helper process to be started in an *_Initialise() call
and use the scheduler (unlike the privops helper, which has its own
loop).
This commit is contained in:
Miroslav Lichvar 2019-11-20 12:39:32 +01:00
parent 24538fe3e9
commit 26a1ed8bc3
2 changed files with 17 additions and 0 deletions

14
sched.c
View file

@ -472,6 +472,20 @@ SCH_RemoveTimeout(SCH_TimeoutID id)
assert(0); assert(0);
} }
/* ================================================== */
void
SCH_Reset(void)
{
while (n_timer_queue_entries > 0)
SCH_RemoveTimeout(timer_queue.next->id);
while (one_highest_fd > 0) {
close(one_highest_fd - 1);
SCH_RemoveFileHandler(one_highest_fd - 1);
}
}
/* ================================================== */ /* ================================================== */
/* Try to dispatch any timeouts that have already gone by, and /* Try to dispatch any timeouts that have already gone by, and
keep going until all are done. (The earlier ones may take so keep going until all are done. (The earlier ones may take so

View file

@ -82,6 +82,9 @@ extern SCH_TimeoutID SCH_AddTimeoutInClass(double min_delay, double separation,
/* The next one probably ought to return a status code */ /* The next one probably ought to return a status code */
extern void SCH_RemoveTimeout(SCH_TimeoutID); extern void SCH_RemoveTimeout(SCH_TimeoutID);
/* Remove all timeouts and close all file descriptors */
extern void SCH_Reset(void);
extern void SCH_MainLoop(void); extern void SCH_MainLoop(void);
extern void SCH_QuitProgram(void); extern void SCH_QuitProgram(void);