diff options
| author | Dan Williams <dan.j.williams@intel.com> | 2022-10-01 19:16:16 -0700 | 
|---|---|---|
| committer | Dan Williams <dan.j.williams@intel.com> | 2022-10-01 19:16:16 -0700 | 
| commit | 305a72efa791c826fe84768ca55e31adc4113ea8 (patch) | |
| tree | 35c72646ea4b81528d73d3d79650004abed3285b /tools/perf/util/scripting-engines/trace-event-python.c | |
| parent | 53fc59511fc4c567342b2ef3f7b99a086430e0b4 (diff) | |
| parent | 6a02124c87f0b61dcaaeb65e7fd406d8afb40fd4 (diff) | |
Merge branch 'for-6.1/nvdimm' into libnvdimm-for-next
Add v6.1 content on top of some straggling updates that missed v6.0.
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
| -rw-r--r-- | tools/perf/util/scripting-engines/trace-event-python.c | 36 | 
1 files changed, 28 insertions, 8 deletions
| diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index adba01b7d9dd..1f2040f36d4e 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c @@ -131,7 +131,7 @@ static void handler_call_die(const char *handler_name)  }  /* - * Insert val into into the dictionary and decrement the reference counter. + * Insert val into the dictionary and decrement the reference counter.   * This is necessary for dictionaries since PyDict_SetItemString() does not   * steal a reference, as opposed to PyTuple_SetItem().   */ @@ -642,15 +642,19 @@ exit:  	return pylist;  } -static PyObject *get_sample_value_as_tuple(struct sample_read_value *value) +static PyObject *get_sample_value_as_tuple(struct sample_read_value *value, +					   u64 read_format)  {  	PyObject *t; -	t = PyTuple_New(2); +	t = PyTuple_New(3);  	if (!t)  		Py_FatalError("couldn't create Python tuple");  	PyTuple_SetItem(t, 0, PyLong_FromUnsignedLongLong(value->id));  	PyTuple_SetItem(t, 1, PyLong_FromUnsignedLongLong(value->value)); +	if (read_format & PERF_FORMAT_LOST) +		PyTuple_SetItem(t, 2, PyLong_FromUnsignedLongLong(value->lost)); +  	return t;  } @@ -681,12 +685,17 @@ static void set_sample_read_in_dict(PyObject *dict_sample,  		Py_FatalError("couldn't create Python list");  	if (read_format & PERF_FORMAT_GROUP) { -		for (i = 0; i < sample->read.group.nr; i++) { -			PyObject *t = get_sample_value_as_tuple(&sample->read.group.values[i]); +		struct sample_read_value *v = sample->read.group.values; + +		i = 0; +		sample_read_group__for_each(v, sample->read.group.nr, read_format) { +			PyObject *t = get_sample_value_as_tuple(v, read_format);  			PyList_SET_ITEM(values, i, t); +			i++;  		}  	} else { -		PyObject *t = get_sample_value_as_tuple(&sample->read.one); +		PyObject *t = get_sample_value_as_tuple(&sample->read.one, +							read_format);  		PyList_SET_ITEM(values, 0, t);  	}  	pydict_set_item_string_decref(dict_sample, "values", values); @@ -861,6 +870,13 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample,  	brstacksym = python_process_brstacksym(sample, al->thread);  	pydict_set_item_string_decref(dict, "brstacksym", brstacksym); +	if (sample->machine_pid) { +		pydict_set_item_string_decref(dict_sample, "machine_pid", +				_PyLong_FromLong(sample->machine_pid)); +		pydict_set_item_string_decref(dict_sample, "vcpu", +				_PyLong_FromLong(sample->vcpu)); +	} +  	pydict_set_item_string_decref(dict_sample, "cpumode",  			_PyLong_FromLong((unsigned long)sample->cpumode)); @@ -1509,7 +1525,7 @@ static void python_do_process_switch(union perf_event *event,  		np_tid = event->context_switch.next_prev_tid;  	} -	t = tuple_new(9); +	t = tuple_new(11);  	if (!t)  		return; @@ -1522,6 +1538,8 @@ static void python_do_process_switch(union perf_event *event,  	tuple_set_s32(t, 6, machine->pid);  	tuple_set_bool(t, 7, out);  	tuple_set_bool(t, 8, out_preempt); +	tuple_set_s32(t, 9, sample->machine_pid); +	tuple_set_s32(t, 10, sample->vcpu);  	call_object(handler, t, handler_name); @@ -1559,7 +1577,7 @@ static void python_process_auxtrace_error(struct perf_session *session __maybe_u  		msg = (const char *)&e->time;  	} -	t = tuple_new(9); +	t = tuple_new(11);  	tuple_set_u32(t, 0, e->type);  	tuple_set_u32(t, 1, e->code); @@ -1570,6 +1588,8 @@ static void python_process_auxtrace_error(struct perf_session *session __maybe_u  	tuple_set_u64(t, 6, tm);  	tuple_set_string(t, 7, msg);  	tuple_set_u32(t, 8, cpumode); +	tuple_set_s32(t, 9, e->machine_pid); +	tuple_set_s32(t, 10, e->vcpu);  	call_object(handler, t, handler_name); | 
