History

ftrace: add ftrace_kill_atomic

It has been suggested that I add a way to disable the function tracer on an oops. This code adds a ftrace_kill_atomic. It is not meant to be used in normal situations. It will disable the ftrace tracer, but will not perform the nice shutdown that requires scheduling.

Steven Rostedt committed 18 years ago

Commit a2bb6a31 parent 26bc83f2 files · +16 −0Browse files

Unified · Split

2 files
  1. include/linux/ftrace.h +1 −0
  2. kernel/trace/ftrace.c +15 −0
include/linux/ftrace.h+1−0
@@ -89,6 +89,7 @@ void ftrace_enable_daemon(void); · 88 unmodified lines
89 89
90/* totally disable ftrace - can not re-enable after this */90/* totally disable ftrace - can not re-enable after this */
91void ftrace_kill(void);91void ftrace_kill(void);
92void ftrace_kill_atomic(void);
92 93
93static inline void tracer_disable(void)94static inline void tracer_disable(void)
94{95{
kernel/trace/ftrace.c+15−0
@@ -1601,6 +1601,21 @@ core_initcall(ftrace_dynamic_init); · 1600 unmodified lines
1601# define ftrace_force_shutdown() do { } while (0)1601# define ftrace_force_shutdown() do { } while (0)
1602#endif /* CONFIG_DYNAMIC_FTRACE */1602#endif /* CONFIG_DYNAMIC_FTRACE */
1603 1603
1604/**
1605 * ftrace_kill_atomic - kill ftrace from critical sections
1606 *
1607 * This function should be used by panic code. It stops ftrace
1608 * but in a not so nice way. If you need to simply kill ftrace
1609 * from a non-atomic section, use ftrace_kill.
1610 */
1611void ftrace_kill_atomic(void)
1612{
1613 ftrace_disabled = 1;
1614 ftrace_enabled = 0;
1615 ftraced_suspend = -1;
1616 clear_ftrace_function();
1617}
1618
1604/**1619/**
1605 * ftrace_kill - totally shutdown ftrace1620 * ftrace_kill - totally shutdown ftrace
1606 *1621 *