@@ -517,6 +517,13 @@ struct dynevent_cmd {
extern int dynevent_create(struct dynevent_cmd *cmd);
+struct synth_event;
+
+extern struct synth_event *find_synth_event(const char *name);
+
+extern void trace_synth(struct synth_event *event, u64 *var_ref_vals,
+ unsigned int *var_ref_idx);
+
extern int synth_event_delete(const char *name);
extern void synth_event_cmd_init(struct dynevent_cmd *cmd,
@@ -814,33 +814,6 @@ static void hist_err_clear(void)
last_cmd_loc[0] = '\0';
}
-typedef void (*synth_probe_func_t) (void *__data, u64 *var_ref_vals,
- unsigned int *var_ref_idx);
-
-static inline void trace_synth(struct synth_event *event, u64 *var_ref_vals,
- unsigned int *var_ref_idx)
-{
- struct tracepoint *tp = event->tp;
-
- if (unlikely(static_key_enabled(&tp->key))) {
- struct tracepoint_func *probe_func_ptr;
- synth_probe_func_t probe_func;
- void *__data;
-
- if (!(cpu_online(raw_smp_processor_id())))
- return;
-
- probe_func_ptr = rcu_dereference_sched((tp)->funcs);
- if (probe_func_ptr) {
- do {
- probe_func = probe_func_ptr->func;
- __data = probe_func_ptr->data;
- probe_func(__data, var_ref_vals, var_ref_idx);
- } while ((++probe_func_ptr)->func);
- }
- }
-}
-
static void action_trace(struct hist_trigger_data *hist_data,
struct tracing_map_elt *elt,
struct trace_buffer *buffer, void *rec,
@@ -845,6 +845,35 @@ struct synth_event *find_synth_event(const char *name)
return NULL;
}
+EXPORT_SYMBOL_GPL(find_synth_event);
+
+typedef void (*synth_probe_func_t) (void *__data, u64 *var_ref_vals,
+ unsigned int *var_ref_idx);
+
+void trace_synth(struct synth_event *event, u64 *var_ref_vals,
+ unsigned int *var_ref_idx)
+{
+ struct tracepoint *tp = event->tp;
+
+ if (unlikely(static_key_enabled(&tp->key))) {
+ struct tracepoint_func *probe_func_ptr;
+ synth_probe_func_t probe_func;
+ void *__data;
+
+ if (!(cpu_online(raw_smp_processor_id())))
+ return;
+
+ probe_func_ptr = rcu_dereference_sched((tp)->funcs);
+ if (probe_func_ptr) {
+ do {
+ probe_func = probe_func_ptr->func;
+ __data = probe_func_ptr->data;
+ probe_func(__data, var_ref_vals, var_ref_idx);
+ } while ((++probe_func_ptr)->func);
+ }
+ }
+}
+EXPORT_SYMBOL_GPL(trace_synth);
static struct trace_event_fields synth_event_fields_array[] = {
{ .type = TRACE_FUNCTION_TYPE,
@@ -36,6 +36,4 @@ struct synth_event {
struct module *mod;
};
-extern struct synth_event *find_synth_event(const char *name);
-
#endif /* __TRACE_SYNTH_H */