Commit | Line | Data |
---|---|---|
5a9479dc MD |
1 | #ifndef _LTT_WRAPPER_FTRACE_H |
2 | #define _LTT_WRAPPER_FTRACE_H | |
3 | ||
4 | /* | |
5 | * Copyright (C) 2011 Mathieu Desnoyers (mathieu.desnoyers@efficios.com) | |
6 | * | |
7 | * wrapper around vmalloc_sync_all. Using KALLSYMS to get its address when | |
8 | * available, else we need to have a kernel that exports this function to GPL | |
9 | * modules. | |
10 | * | |
11 | * Dual LGPL v2.1/GPL v2 license. | |
12 | */ | |
13 | ||
14 | #include <linux/ftrace.h> | |
15 | ||
16 | #ifdef CONFIG_KALLSYMS | |
17 | ||
18 | #include <linux/kallsyms.h> | |
c539a324 | 19 | #include "kallsyms.h" |
5a9479dc MD |
20 | |
21 | static inline | |
22 | int wrapper_register_ftrace_function_probe(char *glob, | |
23 | struct ftrace_probe_ops *ops, void *data) | |
24 | { | |
25 | int (*register_ftrace_function_probe_sym)(char *glob, | |
26 | struct ftrace_probe_ops *ops, void *data); | |
27 | ||
c539a324 | 28 | register_ftrace_function_probe_sym = (void *) kallsyms_lookup_funcptr("register_ftrace_function_probe"); |
5a9479dc MD |
29 | if (register_ftrace_function_probe_sym) { |
30 | return register_ftrace_function_probe_sym(glob, ops, data); | |
31 | } else { | |
32 | printk(KERN_WARNING "LTTng: register_ftrace_function_probe symbol lookup failed.\n"); | |
33 | return -EINVAL; | |
34 | } | |
35 | } | |
36 | ||
37 | static inline | |
38 | void wrapper_unregister_ftrace_function_probe(char *glob, | |
39 | struct ftrace_probe_ops *ops, void *data) | |
40 | { | |
41 | void (*unregister_ftrace_function_probe_sym)(char *glob, | |
42 | struct ftrace_probe_ops *ops, void *data); | |
43 | ||
c539a324 | 44 | unregister_ftrace_function_probe_sym = (void *) kallsyms_lookup_funcptr("unregister_ftrace_function_probe"); |
5a9479dc MD |
45 | if (unregister_ftrace_function_probe_sym) { |
46 | unregister_ftrace_function_probe_sym(glob, ops, data); | |
47 | } else { | |
48 | printk(KERN_WARNING "LTTng: unregister_ftrace_function_probe symbol lookup failed.\n"); | |
49 | WARN_ON(1); | |
50 | } | |
51 | } | |
52 | ||
53 | #else | |
54 | ||
55 | static inline | |
56 | int wrapper_register_ftrace_function_probe(char *glob, | |
c4c357a4 | 57 | struct ftrace_probe_ops *ops, void *data) |
5a9479dc | 58 | { |
9fe47d18 | 59 | return register_ftrace_function_probe(glob, ops, data); |
5a9479dc MD |
60 | } |
61 | ||
62 | static inline | |
63 | void wrapper_unregister_ftrace_function_probe(char *glob, | |
c4c357a4 | 64 | struct ftrace_probe_ops *ops, void *data) |
5a9479dc | 65 | { |
9fe47d18 | 66 | return unregister_ftrace_function_probe(glob, ops, data); |
5a9479dc MD |
67 | } |
68 | #endif | |
69 | ||
70 | #endif /* _LTT_WRAPPER_FTRACE_H */ |