|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] 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#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |