aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAbhishek Sagar <sagar.abhishek@gmail.com>2008-06-21 14:17:53 -0400
committerIngo Molnar <mingo@elte.hu>2008-06-23 16:10:58 -0400
commitecea656d1d5e912d2f3d332657ea4a6d8380f891 (patch)
treefd139cdd762230bf4e55a1341ba29e2b309968b1 /include/linux
parent785656a41f9a9c0e843a23d1ae05d900b5158f8f (diff)
ftrace: freeze kprobe'd records
Let records identified as being kprobe'd be marked as "frozen". The trouble with records which have a kprobe installed on their mcount call-site is that they don't get updated. So if such a function which is currently being traced gets its tracing disabled due to a new filter rule (or because it was added to the notrace list) then it won't be updated and continue being traced. This patch allows scanning of all frozen records during tracing to check if they should be traced. Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ftrace.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 366098d591de..3121b95443d9 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -49,6 +49,7 @@ enum {
49 FTRACE_FL_ENABLED = (1 << 3), 49 FTRACE_FL_ENABLED = (1 << 3),
50 FTRACE_FL_NOTRACE = (1 << 4), 50 FTRACE_FL_NOTRACE = (1 << 4),
51 FTRACE_FL_CONVERTED = (1 << 5), 51 FTRACE_FL_CONVERTED = (1 << 5),
52 FTRACE_FL_FROZEN = (1 << 6),
52}; 53};
53 54
54struct dyn_ftrace { 55struct dyn_ftrace {
@@ -73,15 +74,18 @@ extern void ftrace_caller(void);
73extern void ftrace_call(void); 74extern void ftrace_call(void);
74extern void mcount_call(void); 75extern void mcount_call(void);
75 76
77extern int skip_trace(unsigned long ip);
78
76void ftrace_disable_daemon(void); 79void ftrace_disable_daemon(void);
77void ftrace_enable_daemon(void); 80void ftrace_enable_daemon(void);
78 81
79#else 82#else
83# define skip_trace(ip) ({ 0; })
80# define ftrace_force_update() ({ 0; }) 84# define ftrace_force_update() ({ 0; })
81# define ftrace_set_filter(buf, len, reset) do { } while (0) 85# define ftrace_set_filter(buf, len, reset) do { } while (0)
82# define ftrace_disable_daemon() do { } while (0) 86# define ftrace_disable_daemon() do { } while (0)
83# define ftrace_enable_daemon() do { } while (0) 87# define ftrace_enable_daemon() do { } while (0)
84#endif 88#endif /* CONFIG_DYNAMIC_FTRACE */
85 89
86/* totally disable ftrace - can not re-enable after this */ 90/* totally disable ftrace - can not re-enable after this */
87void ftrace_kill(void); 91void ftrace_kill(void);