From: Steven Rostedt Create the tags and 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 --- 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 := 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 -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/