lkml.org 
[lkml]   [2012]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] tools lib traceevent: Get rid of die() from pretty_print()
    Commit-ID:  245c5a18433090da0e1a799bdb0faa78552b5992
    Gitweb: http://git.kernel.org/tip/245c5a18433090da0e1a799bdb0faa78552b5992
    Author: Namhyung Kim <namhyung.kim@lge.com>
    AuthorDate: Fri, 7 Sep 2012 11:49:45 +0900
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 7 Sep 2012 12:14:30 -0300

    tools lib traceevent: Get rid of die() from pretty_print()

    There are three cases that call die() in the pretty_print.

    1. insufficient number of argument: cannot proceed anymore.
    2. too long format conversion specifier: truncate and proceed.
    3. bad size specifier in format string: skip and proceed.

    For all cases, convert die to do_warning, mark the event as
    EVENT_FL_FAILED and print error message at the last.

    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/1346986187-5170-1-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/lib/traceevent/event-parse.c | 43 ++++++++++++++++++++++++++---------
    1 files changed, 32 insertions(+), 11 deletions(-)

    diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
    index b5b4d80..6d5e759 100644
    --- a/tools/lib/traceevent/event-parse.c
    +++ b/tools/lib/traceevent/event-parse.c
    @@ -3889,8 +3889,11 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
    goto cont_process;
    case '*':
    /* The argument is the length. */
    - if (!arg)
    - die("no argument match");
    + if (!arg) {
    + do_warning("no argument match");
    + event->flags |= EVENT_FL_FAILED;
    + goto out_failed;
    + }
    len_arg = eval_num_arg(data, size, event, arg);
    len_as_arg = 1;
    arg = arg->next;
    @@ -3923,15 +3926,21 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
    case 'x':
    case 'X':
    case 'u':
    - if (!arg)
    - die("no argument match");
    + if (!arg) {
    + do_warning("no argument match");
    + event->flags |= EVENT_FL_FAILED;
    + goto out_failed;
    + }

    len = ((unsigned long)ptr + 1) -
    (unsigned long)saveptr;

    /* should never happen */
    - if (len > 31)
    - die("bad format!");
    + if (len > 31) {
    + do_warning("bad format!");
    + event->flags |= EVENT_FL_FAILED;
    + len = 31;
    + }

    memcpy(format, saveptr, len);
    format[len] = 0;
    @@ -3995,19 +4004,26 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
    trace_seq_printf(s, format, (long long)val);
    break;
    default:
    - die("bad count (%d)", ls);
    + do_warning("bad count (%d)", ls);
    + event->flags |= EVENT_FL_FAILED;
    }
    break;
    case 's':
    - if (!arg)
    - die("no matching argument");
    + if (!arg) {
    + do_warning("no matching argument");
    + event->flags |= EVENT_FL_FAILED;
    + goto out_failed;
    + }

    len = ((unsigned long)ptr + 1) -
    (unsigned long)saveptr;

    /* should never happen */
    - if (len > 31)
    - die("bad format!");
    + if (len > 31) {
    + do_warning("bad format!");
    + event->flags |= EVENT_FL_FAILED;
    + len = 31;
    + }

    memcpy(format, saveptr, len);
    format[len] = 0;
    @@ -4025,6 +4041,11 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
    trace_seq_putc(s, *ptr);
    }

    + if (event->flags & EVENT_FL_FAILED) {
    +out_failed:
    + trace_seq_printf(s, "[FAILED TO PARSE]");
    + }
    +
    if (args) {
    free_args(args);
    free(bprint_fmt);

    \
     
     \ /
      Last update: 2012-09-08 14:21    [W:0.029 / U:59.236 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site