1 // SPDX-License-Identifier: GPL-2.0 2 #include <linux/ftrace.h> 3 #include <linux/tracepoint.h> 4 #include <linux/kernel.h> 5 #include <linux/module.h> 6 #include <linux/init.h> 7 #include <linux/rv.h> 8 #include <rv/instrumentation.h> 9 #include <rv/da_monitor.h> 10 11 #define MODULE_NAME "%%MODEL_NAME%%" 12 13 /* 14 * XXX: include required tracepoint headers, e.g., 15 * #include <trace/events/sched.h> 16 */ 17 #include <rv_trace.h> 18 19 /* 20 * This is the self-generated part of the monitor. Generally, there is no need 21 * to touch this section. 22 */ 23 #include "%%MODEL_NAME%%.h" 24 25 /* 26 * Declare the deterministic automata monitor. 27 * 28 * The rv monitor reference is needed for the monitor declaration. 29 */ 30 static struct rv_monitor rv_%%MODEL_NAME%%; 31 DECLARE_DA_MON_%%MONITOR_TYPE%%(%%MODEL_NAME%%, %%MIN_TYPE%%); 32 33 /* 34 * This is the instrumentation part of the monitor. 35 * 36 * This is the section where manual work is required. Here the kernel events 37 * are translated into model's event. 38 * 39 */ 40 %%TRACEPOINT_HANDLERS_SKEL%% 41 static int enable_%%MODEL_NAME%%(void) 42 { 43 int retval; 44 45 retval = da_monitor_init_%%MODEL_NAME%%(); 46 if (retval) 47 return retval; 48 49 %%TRACEPOINT_ATTACH%% 50 51 return 0; 52 } 53 54 static void disable_%%MODEL_NAME%%(void) 55 { 56 rv_%%MODEL_NAME%%.enabled = 0; 57 58 %%TRACEPOINT_DETACH%% 59 60 da_monitor_destroy_%%MODEL_NAME%%(); 61 } 62 63 /* 64 * This is the monitor register section. 65 */ 66 static struct rv_monitor rv_%%MODEL_NAME%% = { 67 .name = "%%MODEL_NAME%%", 68 .description = "%%DESCRIPTION%%", 69 .enable = enable_%%MODEL_NAME%%, 70 .disable = disable_%%MODEL_NAME%%, 71 .reset = da_monitor_reset_all_%%MODEL_NAME%%, 72 .enabled = 0, 73 }; 74 75 static int __init register_%%MODEL_NAME%%(void) 76 { 77 rv_register_monitor(&rv_%%MODEL_NAME%%); 78 return 0; 79 } 80 81 static void __exit unregister_%%MODEL_NAME%%(void) 82 { 83 rv_unregister_monitor(&rv_%%MODEL_NAME%%); 84 } 85 86 module_init(register_%%MODEL_NAME%%); 87 module_exit(unregister_%%MODEL_NAME%%); 88 89 MODULE_LICENSE("GPL"); 90 MODULE_AUTHOR("dot2k: auto-generated"); 91 MODULE_DESCRIPTION("%%MODEL_NAME%%: %%DESCRIPTION%%"); 92