aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/scripting-engines/trace-event-python.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
-rw-r--r--tools/perf/util/scripting-engines/trace-event-python.c23
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",