diff options
author | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2017-04-04 02:58:35 +0200 |
---|---|---|
committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2017-04-21 04:06:37 +0200 |
commit | 41794f190780c28784fa62b22001691e5876d149 (patch) | |
tree | 6352cf32223ea0228c9c051e0f1acb6c0984a4f5 /kernel/trace/trace.h | |
parent | ftrace: Pass probe ops to probe function (diff) | |
download | linux-41794f190780c28784fa62b22001691e5876d149.tar.xz linux-41794f190780c28784fa62b22001691e5876d149.zip |
ftrace: Added ftrace_func_mapper for function probe triggers
In order to move the ops to the function probes directly, they need a way to
map function ips to their own data without depending on the infrastructure
of the function probes, as the data field will be going away.
New helper functions are added that are based on the ftrace_hash code.
ftrace_func_mapper functions are there to let the probes map ips to their
data. These can be allocated by the probe ops, and referenced in the
function callbacks.
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 0f915c264c19..dbbdee21bcc4 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -944,8 +944,22 @@ struct ftrace_probe_ops { unsigned long ip, struct ftrace_probe_ops *ops, void *data); + void *private_data; }; +struct ftrace_func_mapper; +typedef int (*ftrace_mapper_func)(void *data); + +struct ftrace_func_mapper *allocate_ftrace_func_mapper(void); +void **ftrace_func_mapper_find_ip(struct ftrace_func_mapper *mapper, + unsigned long ip); +int ftrace_func_mapper_add_ip(struct ftrace_func_mapper *mapper, + unsigned long ip, void *data); +void *ftrace_func_mapper_remove_ip(struct ftrace_func_mapper *mapper, + unsigned long ip); +void free_ftrace_func_mapper(struct ftrace_func_mapper *mapper, + ftrace_mapper_func free_func); + extern int register_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops, void *data); |