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. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Cc: Steven Rostedt <srostedt@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
26bc83f4cb
commit
a2bb6a3d85
@@ -89,6 +89,7 @@ void ftrace_enable_daemon(void);
|
|||||||
|
|
||||||
/* totally disable ftrace - can not re-enable after this */
|
/* totally disable ftrace - can not re-enable after this */
|
||||||
void ftrace_kill(void);
|
void ftrace_kill(void);
|
||||||
|
void ftrace_kill_atomic(void);
|
||||||
|
|
||||||
static inline void tracer_disable(void)
|
static inline void tracer_disable(void)
|
||||||
{
|
{
|
||||||
|
@@ -1601,6 +1601,21 @@ core_initcall(ftrace_dynamic_init);
|
|||||||
# define ftrace_force_shutdown() do { } while (0)
|
# define ftrace_force_shutdown() do { } while (0)
|
||||||
#endif /* CONFIG_DYNAMIC_FTRACE */
|
#endif /* CONFIG_DYNAMIC_FTRACE */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ftrace_kill_atomic - kill ftrace from critical sections
|
||||||
|
*
|
||||||
|
* This function should be used by panic code. It stops ftrace
|
||||||
|
* but in a not so nice way. If you need to simply kill ftrace
|
||||||
|
* from a non-atomic section, use ftrace_kill.
|
||||||
|
*/
|
||||||
|
void ftrace_kill_atomic(void)
|
||||||
|
{
|
||||||
|
ftrace_disabled = 1;
|
||||||
|
ftrace_enabled = 0;
|
||||||
|
ftraced_suspend = -1;
|
||||||
|
clear_ftrace_function();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ftrace_kill - totally shutdown ftrace
|
* ftrace_kill - totally shutdown ftrace
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user