function trace: fix a bug of single thread function trace
authorLiming Wang <liming.wang@windriver.com>
Tue, 2 Dec 2008 02:33:08 +0000 (10:33 +0800)
committerIngo Molnar <mingo@elte.hu>
Tue, 2 Dec 2008 08:23:24 +0000 (09:23 +0100)
commit66eafebc1086014709dc38f52ddcb3d67d9b346c
tree10147e635d8d4d15d73cb23baa32a2357570eab0
parent222658e08f72cd539d01f3aabdc258c596f487e2
function trace: fix a bug of single thread function trace

Impact: fix "no output from tracer" bug caused by ftrace_update_pid_func()

When disabling single thread function trace using
"echo -1 > set_ftrace_pid", the normal function trace
has to restore to original function, otherwise the normal
function trace will not work well.

Without this commit, something like below:

$ ps |grep 850
  850 root      2556 S    -/bin/sh
$ echo 850 > /debug/tracing/set_ftrace_pid
$ echo function > /debug/tracing/current_tracer
$ echo 1 > /debug/tracing/tracing_enabled
$ sleep 1
$ echo 0 > /debug/tracing/tracing_enabled
$ cat /debug/tracing/trace_pipe |wc -l
59704
$ echo -1 > /debug/tracing/set_ftrace_pid
$ echo 1 > /debug/tracing/tracing_enabled
$ sleep 1
$ echo 0 > /debug/tracing/tracing_enabled
$ more /debug/tracing/trace_pipe
<====== nothing output now!
it should output trace record.

Signed-off-by: Liming Wang <liming.wang@windriver.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/trace/ftrace.c