lkml.org 
[lkml]   [2009]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 04/11] tracing: add major and minor tags for print format
    From: Steven Rostedt <srostedt@redhat.com>

    Create the tags <major:field> and <minor:field> for trace format prints.

    Given a field (should be of type dev_t) these tags will extract the
    major or minor number from the field.

    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/trace_read_binary.c | 28 +++++++++++++++++++++++++++-
    1 files changed, 27 insertions(+), 1 deletions(-)

    diff --git a/kernel/trace/trace_read_binary.c b/kernel/trace/trace_read_binary.c
    index 4ac31f5..4378350 100644
    --- a/kernel/trace/trace_read_binary.c
    +++ b/kernel/trace/trace_read_binary.c
    @@ -23,7 +23,7 @@ static struct trace_seq buffer;
    * COMMAND := <TYPE:FIELD> | <mask:FIELD:DELIM:MASKS> | <sym:FIELD:SYMBOLS> |
    * <if:FIELD:TRUE:FALSE> | <ifmask:FIELD:MASK:TRUE:FALSE> |
    * <nsec2sec:PRECISION:FIELD> | <nsec2usec:PRECISION:FIELD> |
    - * <nsec2msec:PRECISION:FIELD>
    + * <nsec2msec:PRECISION:FIELD> | <major:FIELD> | <minor:FIELD>
    * TYPE := int | uint | hex | ptr | string | strarray
    * FIELD := defined by the event structure
    * MASKS := MASK=NAME,MASKS | MASK=NAME
    @@ -59,6 +59,10 @@ static struct trace_seq buffer;
    * DELIM will separate the different masks.
    * sym : Print out the name of a matching value. This is similar to
    * mask, but only one value may print.
    + * major : Given a 'device number' value, this will convert it to its
    + * major number.
    + * minor : Given a 'device number' value, this will convert it to its
    + * minor number.
    */

    #define TOK_SIZE 32
    @@ -74,6 +78,8 @@ enum field_types {
    FIELD_IS_STRING,
    FIELD_IS_STRARRAY,
    FIELD_IS_HEX,
    + FIELD_IS_MINOR,
    + FIELD_IS_MAJOR,
    FIELD_IS_NSEC2SEC,
    FIELD_IS_NSEC2USEC,
    FIELD_IS_NSEC2MSEC,
    @@ -405,6 +411,8 @@ handle_field(struct ftrace_event_call *event,
    case FIELD_IS_UINT:
    case FIELD_IS_PTR:
    case FIELD_IS_HEX:
    + case FIELD_IS_MINOR:
    + case FIELD_IS_MAJOR:
    case FIELD_IS_STRING:
    case FIELD_IS_STRARRAY:
    field = find_field(event, fmt, end - fmt);
    @@ -605,6 +613,12 @@ ftrace_initialize_print(struct ftrace_event_call *event, const char *fmt, ...)
    else if (strncmp(fmt, "strarray:", 9) == 0)
    field_type = FIELD_IS_STRARRAY;

    + else if (strncmp(fmt, "major:", 6) == 0)
    + field_type = FIELD_IS_MAJOR;
    +
    + else if (strncmp(fmt, "minor:", 6) == 0)
    + field_type = FIELD_IS_MINOR;
    +
    else
    goto err_format;

    @@ -772,6 +786,8 @@ ftrace_read_binary(struct trace_seq *s, struct ftrace_event_call *event,
    case FIELD_IS_UINT:
    case FIELD_IS_HEX:
    case FIELD_IS_PTR:
    + case FIELD_IS_MAJOR:
    + case FIELD_IS_MINOR:
    field = info->data.field;
    goto skip_if;

    @@ -813,6 +829,16 @@ ftrace_read_binary(struct trace_seq *s, struct ftrace_event_call *event,

    case FIELD_IS_UINT:
    trace_seq_printf(s, "%llu", val);
    + break;
    +
    + case FIELD_IS_MAJOR:
    + trace_seq_printf(s, "%u", MAJOR(val));
    + break;
    +
    + case FIELD_IS_MINOR:
    + trace_seq_printf(s, "%u", MINOR(val));
    + break;
    +
    default:
    /* hex should only print the size specified */
    if (mask)
    --
    1.6.3.1
    --


    \
     
     \ /
      Last update: 2009-06-10 19:05    [W:0.022 / U:1.028 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site