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