diff options
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
-rw-r--r-- | tools/perf/util/scripting-engines/trace-event-python.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index cf65404472cb..b366b48646ca 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c | |||
@@ -473,7 +473,7 @@ static void python_process_general_event(struct perf_sample *sample, | |||
473 | struct thread *thread, | 473 | struct thread *thread, |
474 | struct addr_location *al) | 474 | struct addr_location *al) |
475 | { | 475 | { |
476 | PyObject *handler, *retval, *t, *dict, *callchain; | 476 | PyObject *handler, *retval, *t, *dict, *callchain, *dict_sample; |
477 | static char handler_name[64]; | 477 | static char handler_name[64]; |
478 | unsigned n = 0; | 478 | unsigned n = 0; |
479 | 479 | ||
@@ -489,6 +489,10 @@ static void python_process_general_event(struct perf_sample *sample, | |||
489 | if (!dict) | 489 | if (!dict) |
490 | Py_FatalError("couldn't create Python dictionary"); | 490 | Py_FatalError("couldn't create Python dictionary"); |
491 | 491 | ||
492 | dict_sample = PyDict_New(); | ||
493 | if (!dict_sample) | ||
494 | Py_FatalError("couldn't create Python dictionary"); | ||
495 | |||
492 | snprintf(handler_name, sizeof(handler_name), "%s", "process_event"); | 496 | snprintf(handler_name, sizeof(handler_name), "%s", "process_event"); |
493 | 497 | ||
494 | handler = PyDict_GetItemString(main_dict, handler_name); | 498 | handler = PyDict_GetItemString(main_dict, handler_name); |
@@ -498,8 +502,21 @@ static void python_process_general_event(struct perf_sample *sample, | |||
498 | pydict_set_item_string_decref(dict, "ev_name", PyString_FromString(perf_evsel__name(evsel))); | 502 | pydict_set_item_string_decref(dict, "ev_name", PyString_FromString(perf_evsel__name(evsel))); |
499 | pydict_set_item_string_decref(dict, "attr", PyString_FromStringAndSize( | 503 | pydict_set_item_string_decref(dict, "attr", PyString_FromStringAndSize( |
500 | (const char *)&evsel->attr, sizeof(evsel->attr))); | 504 | (const char *)&evsel->attr, sizeof(evsel->attr))); |
501 | pydict_set_item_string_decref(dict, "sample", PyString_FromStringAndSize( | 505 | |
502 | (const char *)sample, sizeof(*sample))); | 506 | pydict_set_item_string_decref(dict_sample, "pid", |
507 | PyInt_FromLong(sample->pid)); | ||
508 | pydict_set_item_string_decref(dict_sample, "tid", | ||
509 | PyInt_FromLong(sample->tid)); | ||
510 | pydict_set_item_string_decref(dict_sample, "cpu", | ||
511 | PyInt_FromLong(sample->cpu)); | ||
512 | pydict_set_item_string_decref(dict_sample, "ip", | ||
513 | PyLong_FromUnsignedLongLong(sample->ip)); | ||
514 | pydict_set_item_string_decref(dict_sample, "time", | ||
515 | PyLong_FromUnsignedLongLong(sample->time)); | ||
516 | pydict_set_item_string_decref(dict_sample, "period", | ||
517 | PyLong_FromUnsignedLongLong(sample->period)); | ||
518 | pydict_set_item_string_decref(dict, "sample", dict_sample); | ||
519 | |||
503 | pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize( | 520 | pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize( |
504 | (const char *)sample->raw_data, sample->raw_size)); | 521 | (const char *)sample->raw_data, sample->raw_size)); |
505 | pydict_set_item_string_decref(dict, "comm", | 522 | pydict_set_item_string_decref(dict, "comm", |