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