@@ -5453,20 +5453,30 @@ void tep_print_field(struct trace_seq *s, void *data,
_tep_print_field(s, data, field, NULL);
}
-void tep_print_fields(struct trace_seq *s, void *data,
- int size __maybe_unused, struct tep_event *event)
+void tep_print_selected_fields(struct trace_seq *s, void *data,
+ struct tep_event *event,
+ int ignore_mask)
{
struct tep_print_parse *parse = event->print_fmt.print_cache;
struct tep_format_field *field;
+ int field_mask = 1;
field = event->format.fields;
- while (field) {
+ for (;field; field = field->next, field_mask *= 2) {
+ if (field_mask & ignore_mask)
+ continue;
+
trace_seq_printf(s, " %s=", field->name);
_tep_print_field(s, data, field, &parse);
- field = field->next;
}
}
+void tep_print_fields(struct trace_seq *s, void *data,
+ int size __maybe_unused, struct tep_event *event)
+{
+ tep_print_selected_fields(s, data, event, 0);
+}
+
static int print_function(struct trace_seq *s, const char *format,
void *data, int size, struct tep_event *event,
struct tep_print_arg *arg)
@@ -545,6 +545,9 @@ int tep_cmdline_pid(struct tep_handle *tep, struct tep_cmdline *cmdline);
void tep_print_field(struct trace_seq *s, void *data,
struct tep_format_field *field);
+void tep_print_selected_fields(struct trace_seq *s, void *data,
+ struct tep_event *event,
+ int ignore_mask);
void tep_print_fields(struct trace_seq *s, void *data,
int size __maybe_unused, struct tep_event *event);
int tep_strerror(struct tep_handle *tep, enum tep_errno errnum,
The new method can print only a subset of the unique data fields of the trace event. The print format is derived from the parsing tokens (tep_print_parse objects) of the event. Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com> --- src/event-parse.c | 18 ++++++++++++++---- src/event-parse.h | 3 +++ 2 files changed, 17 insertions(+), 4 deletions(-)