diff options
Diffstat (limited to 'tools/perf/util/trace-event-parse.c')
-rw-r--r-- | tools/perf/util/trace-event-parse.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c index 6681f71..e9e1c03 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c @@ -120,6 +120,42 @@ raw_field_value(struct event_format *event, const char *name, void *data) return val; } +void *raw_field_ptr(struct event_format *event, const char *name, void *data) +{ + struct format_field *field; + + field = pevent_find_any_field(event, name); + if (!field) + return NULL; + + if (field->flags & FIELD_IS_DYNAMIC) { + int offset; + + offset = *(int *)(data + field->offset); + offset &= 0xffff; + + return data + offset; + } + + return data + field->offset; +} + +int trace_parse_common_type(struct pevent *pevent, void *data) +{ + struct pevent_record record; + + record.data = data; + return pevent_data_type(pevent, &record); +} + +int trace_parse_common_pid(struct pevent *pevent, void *data) +{ + struct pevent_record record; + + record.data = data; + return pevent_data_pid(pevent, &record); +} + unsigned long long read_size(struct event_format *event, void *ptr, int size) { return pevent_read_number(event->pevent, ptr, size); |