lkml.org 
[lkml]   [2013]   [May]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 15/15] perf ftrace: Add a signal handler for SIGSEGV
    Date
    From: Namhyung Kim <namhyung.kim@lge.com>

    It's for debugging purpose.

    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    ---
    tools/perf/builtin-ftrace.c | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
    index 6d69bf411314..76bbbf294ec6 100644
    --- a/tools/perf/builtin-ftrace.c
    +++ b/tools/perf/builtin-ftrace.c
    @@ -41,6 +41,13 @@ struct perf_ftrace {

    static bool done;

    +static void sig_exit(int sig)
    +{
    + psignal(sig, "perf");
    + signal(sig, SIG_DFL);
    + raise(sig);
    +}
    +
    static void sig_handler(int sig __maybe_unused)
    {
    done = true;
    @@ -228,6 +235,7 @@ static int do_ftrace_live(struct perf_ftrace *ftrace)
    signal(SIGUSR1, sig_handler);
    signal(SIGCHLD, sig_handler);
    signal(SIGPIPE, sig_handler);
    + signal(SIGSEGV, sig_exit);

    if (setup_tracing_files(ftrace) < 0)
    goto out_reset;
    @@ -602,6 +610,7 @@ static int do_ftrace_record(struct perf_ftrace *ftrace)
    signal(SIGINT, sig_handler);
    signal(SIGUSR1, sig_handler);
    signal(SIGCHLD, sig_handler);
    + signal(SIGSEGV, sig_exit);

    if (setup_tracing_files(ftrace) < 0)
    goto out_reset;
    @@ -1100,6 +1109,8 @@ static int do_ftrace_show(struct perf_ftrace *ftrace)
    },
    };

    + signal(SIGSEGV, sig_exit);
    +
    scnprintf(buf, sizeof(buf), "%s.dir/perf.header", ftrace->dirname);

    session = perf_session__new(buf, O_RDONLY, false, false, &show.tool);
    @@ -1271,6 +1282,8 @@ static int do_ftrace_report(struct perf_ftrace *ftrace)
    struct machine *machine;
    struct dso *dso;

    + signal(SIGSEGV, sig_exit);
    +
    scnprintf(buf, sizeof(buf), "%s.dir/perf.header", ftrace->dirname);

    session = perf_session__new(buf, O_RDONLY, false, false, &report.tool);
    --
    1.7.11.7


    \
     
     \ /
      Last update: 2013-05-14 13:01    [W:4.110 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site