|commit 2a86bf81403f54acd213c4f326ab214b372fe061 |Author: Arjan van de Ven <ar...@linux.intel.com> |Date: Fri Apr 27 16:37:40 2012 -0400 | | this is a hack, and broken, but it seems the trace event infrastructure throws us a curve ball here
didn't solve the problem for me, as I still obverse some interrupts with empty descriptions. Patch (code extracted from pevent print_event_fields()) seem to fix the problem. Signed-off-by: Sergey Senozhatsky <sergey.senozhat...@gmail.com> --- src/process/do_process.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/process/do_process.cpp b/src/process/do_process.cpp index c030d47..246db58 100644 --- a/src/process/do_process.cpp +++ b/src/process/do_process.cpp @@ -338,14 +338,19 @@ void perf_process_bundle::handle_trace_point(void *trace, int cpu, uint64_t time } else if (strcmp(event->name, "irq_handler_entry") == 0) { + unsigned long long offset, len; class interrupt *irq; const char *handler; int nr; field = pevent_find_any_field(event, "name"); - if (!field) + if (!field || !(field->flags & FIELD_IS_STRING)) return; /* ?? */ - handler = (char *)trace + field->offset + sizeof(long); + offset = field->offset; + len = field->size; + offset = pevent_read_number(event->pevent, (char *)trace + offset, len); + offset &= 0xffff; + handler = (char *)trace + offset; ret = pevent_get_field_val(NULL, event, "irq", &rec, &val, 0); if (ret < 0) _______________________________________________ Power mailing list Power@bughost.org https://bughost.org/mailman/listinfo/power