xref: /linux/kernel/trace/rv/monitors/deadline/deadline.c (revision fdbfee9fc56e13a1307868829d438ad66ab308a4)
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)24 static 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)34 static 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