[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] xen/sched: only allow schedulers with all mandatory functions available
commit ec25b3c0261c5d2cd59b645004178313ac3fe974 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Tue May 28 12:32:14 2019 +0200 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Tue Jun 11 17:42:52 2019 +0100 xen/sched: only allow schedulers with all mandatory functions available Some functions of struct scheduler are mandatory. Test those in the scheduler initialization loop to be present and drop schedulers not complying. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Dario Faggioli <dfaggioli@xxxxxxxx> --- xen/common/schedule.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/xen/common/schedule.c b/xen/common/schedule.c index 86341bc8fb..b671aeadb7 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -1727,9 +1727,33 @@ void __init scheduler_init(void) for ( i = 0; i < NUM_SCHEDULERS; i++) { +#define sched_test_func(f) \ + if ( !schedulers[i]->f ) \ + { \ + printk("scheduler %s misses .%s, dropped\n", \ + schedulers[i]->opt_name, #f); \ + schedulers[i] = NULL; \ + } + + sched_test_func(init); + sched_test_func(deinit); + sched_test_func(pick_cpu); + sched_test_func(alloc_vdata); + sched_test_func(free_vdata); + sched_test_func(switch_sched); + sched_test_func(do_schedule); + +#undef sched_test_func + if ( schedulers[i]->global_init && schedulers[i]->global_init() < 0 ) + { + printk("scheduler %s failed initialization, dropped\n", + schedulers[i]->opt_name); schedulers[i] = NULL; - else if ( !ops.name && !strcmp(schedulers[i]->opt_name, opt_sched) ) + } + + if ( schedulers[i] && !ops.name && + !strcmp(schedulers[i]->opt_name, opt_sched) ) ops = *schedulers[i]; } -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |