lkml.org 
[lkml]   [2009]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/6] tracing: Simplify print_graph_cpu()
    Date
    From: Lai Jiangshan <laijs@cn.fujitsu.com>

    print_graph_cpu() is little over-designed.

    And "log10_all" may be wrong when there are holes in cpu_online_mask:
    the max online cpu id > cpumask_weight(cpu_online_mask)
    So change it by using a static column length for the cpu matching
    nr_cpu_ids number of decimal characters.

    Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    LKML-Reference: <4A6EEE5E.2000001@cn.fujitsu.com>
    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    ---
    kernel/trace/trace_functions_graph.c | 30 ++++--------------------------
    1 files changed, 4 insertions(+), 26 deletions(-)
    diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
    index abf7c4a..e30472d 100644
    --- a/kernel/trace/trace_functions_graph.c
    +++ b/kernel/trace/trace_functions_graph.c
    @@ -183,43 +183,19 @@ static void graph_trace_reset(struct trace_array *tr)
    unregister_ftrace_graph();
    }

    -static inline int log10_cpu(int nb)
    -{
    - if (nb / 100)
    - return 3;
    - if (nb / 10)
    - return 2;
    - return 1;
    -}
    +static int max_bytes_for_cpu;

    static enum print_line_t
    print_graph_cpu(struct trace_seq *s, int cpu)
    {
    - int i;
    int ret;
    - int log10_this = log10_cpu(cpu);
    - int log10_all = log10_cpu(cpumask_weight(cpu_online_mask));
    -

    /*
    * Start with a space character - to make it stand out
    * to the right a bit when trace output is pasted into
    * email:
    */
    - ret = trace_seq_printf(s, " ");
    -
    - /*
    - * Tricky - we space the CPU field according to the max
    - * number of online CPUs. On a 2-cpu system it would take
    - * a maximum of 1 digit - on a 128 cpu system it would
    - * take up to 3 digits:
    - */
    - for (i = 0; i < log10_all - log10_this; i++) {
    - ret = trace_seq_printf(s, " ");
    - if (!ret)
    - return TRACE_TYPE_PARTIAL_LINE;
    - }
    - ret = trace_seq_printf(s, "%d) ", cpu);
    + ret = trace_seq_printf(s, " %*d) ", max_bytes_for_cpu, cpu);
    if (!ret)
    return TRACE_TYPE_PARTIAL_LINE;

    @@ -919,6 +895,8 @@ static struct tracer graph_trace __read_mostly = {

    static __init int init_graph_trace(void)
    {
    + max_bytes_for_cpu = snprintf(NULL, 0, "%d", nr_cpu_ids - 1);
    +
    return register_tracer(&graph_trace);
    }

    --
    1.6.2.3


    \
     
     \ /
      Last update: 2009-07-29 19:19    [W:1.416 / U:0.868 seconds]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean