Lines Matching refs:tuser
56 #define for_each_tracepoint_user(tuser) \ argument
57 list_for_each_entry(tuser, &tracepoint_user_list, list)
59 static int tracepoint_user_register(struct tracepoint_user *tuser) in tracepoint_user_register() argument
61 struct tracepoint *tpoint = tuser->tpoint; in tracepoint_user_register()
70 static void tracepoint_user_unregister(struct tracepoint_user *tuser) in tracepoint_user_unregister() argument
72 if (!tuser->tpoint) in tracepoint_user_unregister()
75 WARN_ON_ONCE(tracepoint_probe_unregister(tuser->tpoint, tuser->tpoint->probestub, NULL)); in tracepoint_user_unregister()
76 tuser->tpoint = NULL; in tracepoint_user_unregister()
79 static unsigned long tracepoint_user_ip(struct tracepoint_user *tuser) in tracepoint_user_ip() argument
81 if (!tuser->tpoint) in tracepoint_user_ip()
84 return (unsigned long)tuser->tpoint->probestub; in tracepoint_user_ip()
87 static void __tracepoint_user_free(struct tracepoint_user *tuser) in __tracepoint_user_free() argument
89 if (!tuser) in __tracepoint_user_free()
91 kfree(tuser->name); in __tracepoint_user_free()
92 kfree(tuser); in __tracepoint_user_free()
99 struct tracepoint_user *tuser __free(tuser_free) = NULL; in DEFINE_FREE()
102 tuser = kzalloc_obj(*tuser); in DEFINE_FREE()
103 if (!tuser) in DEFINE_FREE()
105 tuser->name = kstrdup(name, GFP_KERNEL); in DEFINE_FREE()
106 if (!tuser->name) in DEFINE_FREE()
111 tuser->tpoint = tpoint; in DEFINE_FREE()
112 ret = tracepoint_user_register(tuser); in DEFINE_FREE()
117 tuser->refcount = 1; in DEFINE_FREE()
118 INIT_LIST_HEAD(&tuser->list); in DEFINE_FREE()
119 list_add(&tuser->list, &tracepoint_user_list); in DEFINE_FREE()
121 return_ptr(tuser); in DEFINE_FREE()
135 struct tracepoint_user *tuser; in tracepoint_user_find_get() local
146 for_each_tracepoint_user(tuser) { in tracepoint_user_find_get()
147 if (!strcmp(tuser->name, name)) { in tracepoint_user_find_get()
148 tuser->refcount++; in tracepoint_user_find_get()
150 return tuser; in tracepoint_user_find_get()
155 tuser = __tracepoint_user_init(name, tpoint); in tracepoint_user_find_get()
156 if (!IS_ERR_OR_NULL(tuser)) in tracepoint_user_find_get()
159 return tuser; in tracepoint_user_find_get()
162 static void tracepoint_user_put(struct tracepoint_user *tuser) in tracepoint_user_put() argument
165 if (--tuser->refcount > 0) in tracepoint_user_put()
168 list_del(&tuser->list); in tracepoint_user_put()
169 tracepoint_user_unregister(tuser); in tracepoint_user_put()
172 __tracepoint_user_free(tuser); in tracepoint_user_put()
193 struct tracepoint_user *tuser; member
560 if (tf->tuser) in free_trace_fprobe()
561 tracepoint_user_put(tf->tuser); in free_trace_fprobe()
769 struct tracepoint_user *tuser __free(tuser_put) = NULL; in __regsiter_tracepoint_fprobe()
774 if (WARN_ON_ONCE(tf->tuser)) in __regsiter_tracepoint_fprobe()
778 tuser = tracepoint_user_find_get(tf->symbol, &mod); in __regsiter_tracepoint_fprobe()
780 if (IS_ERR(tuser)) in __regsiter_tracepoint_fprobe()
781 return PTR_ERR(tuser); in __regsiter_tracepoint_fprobe()
782 if (!tuser) in __regsiter_tracepoint_fprobe()
786 if (tuser->tpoint) { in __regsiter_tracepoint_fprobe()
787 ip = tracepoint_user_ip(tuser); in __regsiter_tracepoint_fprobe()
796 tf->tuser = no_free_ptr(tuser); in __regsiter_tracepoint_fprobe()
850 if (tf->tuser) { in __unregister_trace_fprobe()
851 tracepoint_user_put(tf->tuser); in __unregister_trace_fprobe()
852 tf->tuser = NULL; in __unregister_trace_fprobe()
1055 static bool tracepoint_user_within_module(struct tracepoint_user *tuser, in tracepoint_user_within_module() argument
1058 return within_module(tracepoint_user_ip(tuser), mod); in tracepoint_user_within_module()
1061 static int tracepoint_user_register_again(struct tracepoint_user *tuser, in tracepoint_user_register_again() argument
1064 tuser->tpoint = tpoint; in tracepoint_user_register_again()
1065 return tracepoint_user_register(tuser); in tracepoint_user_register_again()
1068 static void tracepoint_user_unregister_clear(struct tracepoint_user *tuser) in tracepoint_user_unregister_clear() argument
1070 tracepoint_user_unregister(tuser); in tracepoint_user_unregister_clear()
1071 tuser->tpoint = NULL; in tracepoint_user_unregister_clear()
1079 struct tracepoint_user *tuser; in __tracepoint_probe_module_cb() local
1086 for_each_tracepoint_user(tuser) { in __tracepoint_probe_module_cb()
1089 tpoint = find_tracepoint_in_module(tp_mod->mod, tuser->name); in __tracepoint_probe_module_cb()
1092 WARN_ON_ONCE(tracepoint_user_register_again(tuser, tpoint)); in __tracepoint_probe_module_cb()
1094 tracepoint_user_within_module(tuser, tp_mod->mod)) { in __tracepoint_probe_module_cb()
1096 tracepoint_user_unregister_clear(tuser); in __tracepoint_probe_module_cb()
1122 if (!trace_fprobe_is_tracepoint(tf) || !tf->tuser) in __tprobe_event_module_cb()
1127 tracepoint_user_within_module(tf->tuser, mod)) { in __tprobe_event_module_cb()
1128 unsigned long ip = tracepoint_user_ip(tf->tuser); in __tprobe_event_module_cb()
1140 !tf->tuser->tpoint) { in __tprobe_event_module_cb()
1517 if (tf->tuser) { in disable_trace_fprobe()
1518 tracepoint_user_put(tf->tuser); in disable_trace_fprobe()
1519 tf->tuser = NULL; in disable_trace_fprobe()