Skip to content

Commit 23edf48

Browse files
FlorentRevestrostedt
authored andcommitted
ftrace: Replace uses of _ftrace_direct APIs with _ftrace_direct_multi
The _multi API requires that users keep their own ops but can enforce that an op is only associated to one direct call. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Florent Revest <[email protected]> Acked-by: Mark Rutland <[email protected]> Tested-by: Mark Rutland <[email protected]> Acked-by: Jiri Olsa <[email protected]> Signed-off-by: Steven Rostedt (Google) <[email protected]>
1 parent 5949574 commit 23edf48

File tree

4 files changed

+28
-18
lines changed

4 files changed

+28
-18
lines changed

kernel/trace/trace_selftest.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,7 @@ static struct fgraph_ops fgraph_ops __initdata = {
785785
};
786786

787787
#ifdef CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
788+
static struct ftrace_ops direct;
788789
#ifndef CALL_DEPTH_ACCOUNT
789790
#define CALL_DEPTH_ACCOUNT ""
790791
#endif
@@ -870,8 +871,8 @@ trace_selftest_startup_function_graph(struct tracer *trace,
870871
* Register direct function together with graph tracer
871872
* and make sure we get graph trace.
872873
*/
873-
ret = register_ftrace_direct((unsigned long) DYN_FTRACE_TEST_NAME,
874-
(unsigned long) trace_direct_tramp);
874+
ftrace_set_filter_ip(&direct, (unsigned long)DYN_FTRACE_TEST_NAME, 0, 0);
875+
ret = register_ftrace_direct_multi(&direct, (unsigned long)trace_direct_tramp);
875876
if (ret)
876877
goto out;
877878

@@ -891,8 +892,9 @@ trace_selftest_startup_function_graph(struct tracer *trace,
891892

892893
unregister_ftrace_graph(&fgraph_ops);
893894

894-
ret = unregister_ftrace_direct((unsigned long) DYN_FTRACE_TEST_NAME,
895-
(unsigned long) trace_direct_tramp);
895+
ret = unregister_ftrace_direct_multi(&direct,
896+
(unsigned long) trace_direct_tramp,
897+
true);
896898
if (ret)
897899
goto out;
898900

samples/ftrace/ftrace-direct-modify.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ asm (
9696

9797
#endif /* CONFIG_S390 */
9898

99+
static struct ftrace_ops direct;
100+
99101
static unsigned long my_tramp = (unsigned long)my_tramp1;
100102
static unsigned long tramps[2] = {
101103
(unsigned long)my_tramp1,
@@ -114,7 +116,7 @@ static int simple_thread(void *arg)
114116
if (ret)
115117
continue;
116118
t ^= 1;
117-
ret = modify_ftrace_direct(my_ip, my_tramp, tramps[t]);
119+
ret = modify_ftrace_direct_multi(&direct, tramps[t]);
118120
if (!ret)
119121
my_tramp = tramps[t];
120122
WARN_ON_ONCE(ret);
@@ -129,7 +131,9 @@ static int __init ftrace_direct_init(void)
129131
{
130132
int ret;
131133

132-
ret = register_ftrace_direct(my_ip, my_tramp);
134+
ftrace_set_filter_ip(&direct, (unsigned long) my_ip, 0, 0);
135+
ret = register_ftrace_direct_multi(&direct, my_tramp);
136+
133137
if (!ret)
134138
simple_tsk = kthread_run(simple_thread, NULL, "event-sample-fn");
135139
return ret;
@@ -138,12 +142,12 @@ static int __init ftrace_direct_init(void)
138142
static void __exit ftrace_direct_exit(void)
139143
{
140144
kthread_stop(simple_tsk);
141-
unregister_ftrace_direct(my_ip, my_tramp);
145+
unregister_ftrace_direct_multi(&direct, my_tramp, true);
142146
}
143147

144148
module_init(ftrace_direct_init);
145149
module_exit(ftrace_direct_exit);
146150

147151
MODULE_AUTHOR("Steven Rostedt");
148-
MODULE_DESCRIPTION("Example use case of using modify_ftrace_direct()");
152+
MODULE_DESCRIPTION("Example use case of using modify_ftrace_direct_multi()");
149153
MODULE_LICENSE("GPL");

samples/ftrace/ftrace-direct-too.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,21 +70,23 @@ asm (
7070

7171
#endif /* CONFIG_S390 */
7272

73+
static struct ftrace_ops direct;
74+
7375
static int __init ftrace_direct_init(void)
7476
{
75-
return register_ftrace_direct((unsigned long)handle_mm_fault,
76-
(unsigned long)my_tramp);
77+
ftrace_set_filter_ip(&direct, (unsigned long) handle_mm_fault, 0, 0);
78+
79+
return register_ftrace_direct_multi(&direct, (unsigned long) my_tramp);
7780
}
7881

7982
static void __exit ftrace_direct_exit(void)
8083
{
81-
unregister_ftrace_direct((unsigned long)handle_mm_fault,
82-
(unsigned long)my_tramp);
84+
unregister_ftrace_direct_multi(&direct, (unsigned long)my_tramp, true);
8385
}
8486

8587
module_init(ftrace_direct_init);
8688
module_exit(ftrace_direct_exit);
8789

8890
MODULE_AUTHOR("Steven Rostedt");
89-
MODULE_DESCRIPTION("Another example use case of using register_ftrace_direct()");
91+
MODULE_DESCRIPTION("Another example use case of using register_ftrace_direct_multi()");
9092
MODULE_LICENSE("GPL");

samples/ftrace/ftrace-direct.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,21 +63,23 @@ asm (
6363

6464
#endif /* CONFIG_S390 */
6565

66+
static struct ftrace_ops direct;
67+
6668
static int __init ftrace_direct_init(void)
6769
{
68-
return register_ftrace_direct((unsigned long)wake_up_process,
69-
(unsigned long)my_tramp);
70+
ftrace_set_filter_ip(&direct, (unsigned long) wake_up_process, 0, 0);
71+
72+
return register_ftrace_direct_multi(&direct, (unsigned long) my_tramp);
7073
}
7174

7275
static void __exit ftrace_direct_exit(void)
7376
{
74-
unregister_ftrace_direct((unsigned long)wake_up_process,
75-
(unsigned long)my_tramp);
77+
unregister_ftrace_direct_multi(&direct, (unsigned long)my_tramp, true);
7678
}
7779

7880
module_init(ftrace_direct_init);
7981
module_exit(ftrace_direct_exit);
8082

8183
MODULE_AUTHOR("Steven Rostedt");
82-
MODULE_DESCRIPTION("Example use case of using register_ftrace_direct()");
84+
MODULE_DESCRIPTION("Example use case of using register_ftrace_direct_multi()");
8385
MODULE_LICENSE("GPL");

0 commit comments

Comments
 (0)