1 // SPDX-License-Identifier: GPL-2.0 2 #include <linux/kernel.h> 3 #include <linux/module.h> 4 #include <linux/init.h> 5 #include <linux/rv.h> 6 #include <linux/kallsyms.h> 7 8 #define MODULE_NAME "deadline" 9 10 #include "deadline.h" 11 12 struct rv_monitor rv_deadline = { 13 .name = "deadline", 14 .description = "container for several deadline scheduler specifications.", 15 .enable = NULL, 16 .disable = NULL, 17 .reset = NULL, 18 .enabled = 0, 19 }; 20 21 /* Used by other monitors */ 22 struct sched_class *rv_ext_sched_class; 23 register_deadline(void)24static int __init register_deadline(void) 25 { 26 if (IS_ENABLED(CONFIG_SCHED_CLASS_EXT)) { 27 rv_ext_sched_class = (void *)kallsyms_lookup_name("ext_sched_class"); 28 if (!rv_ext_sched_class) 29 pr_warn("rv: Missing ext_sched_class, monitors may not work.\n"); 30 } 31 return rv_register_monitor(&rv_deadline, NULL); 32 } 33 unregister_deadline(void)34static void __exit unregister_deadline(void) 35 { 36 rv_unregister_monitor(&rv_deadline); 37 } 38 39 module_init(register_deadline); 40 module_exit(unregister_deadline); 41 42 MODULE_LICENSE("GPL"); 43 MODULE_AUTHOR("Gabriele Monaco <gmonaco@redhat.com>"); 44 MODULE_DESCRIPTION("deadline: container for several deadline scheduler specifications."); 45