1 #undef TRACE_SYSTEM 2 #define TRACE_SYSTEM module 3 4 #if !defined(_TRACE_MODULE_H) || defined(TRACE_HEADER_MULTI_READ) 5 #define _TRACE_MODULE_H 6 7 #include <linux/tracepoint.h> 8 9 #ifdef CONFIG_MODULES 10 11 struct module; 12 13 #define show_module_flags(flags) __print_flags(flags, "", \ 14 { (1UL << TAINT_PROPRIETARY_MODULE), "P" }, \ 15 { (1UL << TAINT_FORCED_MODULE), "F" }, \ 16 { (1UL << TAINT_CRAP), "C" }) 17 18 TRACE_EVENT(module_load, 19 20 TP_PROTO(struct module *mod), 21 22 TP_ARGS(mod), 23 24 TP_STRUCT__entry( 25 __field( unsigned int, taints ) 26 __string( name, mod->name ) 27 ), 28 29 TP_fast_assign( 30 __entry->taints = mod->taints; 31 __assign_str(name, mod->name); 32 ), 33 34 TP_printk("%s %s", __get_str(name), show_module_flags(__entry->taints)) 35 ); 36 37 TRACE_EVENT(module_free, 38 39 TP_PROTO(struct module *mod), 40 41 TP_ARGS(mod), 42 43 TP_STRUCT__entry( 44 __string( name, mod->name ) 45 ), 46 47 TP_fast_assign( 48 __assign_str(name, mod->name); 49 ), 50 51 TP_printk("%s", __get_str(name)) 52 ); 53 54 TRACE_EVENT(module_get, 55 56 TP_PROTO(struct module *mod, unsigned long ip, int refcnt), 57 58 TP_ARGS(mod, ip, refcnt), 59 60 TP_STRUCT__entry( 61 __field( unsigned long, ip ) 62 __field( int, refcnt ) 63 __string( name, mod->name ) 64 ), 65 66 TP_fast_assign( 67 __entry->ip = ip; 68 __entry->refcnt = refcnt; 69 __assign_str(name, mod->name); 70 ), 71 72 TP_printk("%s call_site=%pf refcnt=%d", 73 __get_str(name), (void *)__entry->ip, __entry->refcnt) 74 ); 75 76 TRACE_EVENT(module_put, 77 78 TP_PROTO(struct module *mod, unsigned long ip, int refcnt), 79 80 TP_ARGS(mod, ip, refcnt), 81 82 TP_STRUCT__entry( 83 __field( unsigned long, ip ) 84 __field( int, refcnt ) 85 __string( name, mod->name ) 86 ), 87 88 TP_fast_assign( 89 __entry->ip = ip; 90 __entry->refcnt = refcnt; 91 __assign_str(name, mod->name); 92 ), 93 94 TP_printk("%s call_site=%pf refcnt=%d", 95 __get_str(name), (void *)__entry->ip, __entry->refcnt) 96 ); 97 98 TRACE_EVENT(module_request, 99 100 TP_PROTO(char *name, bool wait, unsigned long ip), 101 102 TP_ARGS(name, wait, ip), 103 104 TP_STRUCT__entry( 105 __field( bool, wait ) 106 __field( unsigned long, ip ) 107 __string( name, name ) 108 ), 109 110 TP_fast_assign( 111 __entry->wait = wait; 112 __entry->ip = ip; 113 __assign_str(name, name); 114 ), 115 116 TP_printk("%s wait=%d call_site=%pf", 117 __get_str(name), (int)__entry->wait, (void *)__entry->ip) 118 ); 119 120 #endif /* CONFIG_MODULES */ 121 122 #endif /* _TRACE_MODULE_H */ 123 124 /* This part must be outside protection */ 125 #include <trace/define_trace.h> 126 127