perf python: Use exception to propagate errors
Commit-ID: 5c6970af2f4be4e04b06fe78214f6809777a8354 Gitweb: http://git.kernel.org/tip/5c6970af2f4be4e04b06fe78214f6809777a8354 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 2 Jun 2011 10:55:10 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 2 Jun 2011 10:55:10 -0300
perf python: Use exception to propagate errors
We were using pr_debug to tell the user about not being able to parse a sample where we should really use the python way of reporting errors: exceptions.
Fixes this problem:
[root@emilia ~]# python
Quoted 1 line
Quoted 1 line
Quoted 1 line
import perf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /home/acme/git/build/perf/python/perf.so: undefined symbol: eprintf
Quoted 1 line
Quoted 1 line
Quoted 1 line
[root@emilia ~]
As we want to keep the objects linked in the python binding (and in the future in a shared library) minimal.
Cc Frederic Weisbecker <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/python.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-)
tools/perf/util/python.c +4 -6
@@ -694,14 +694,12 @@ static PyObject *pyrf_evlist__read_on_cpu(struct pyrf_evlist *pevlist, err =perf_event__parse_sample (event, first->attr.sample_type,perf_sample_size (first->attr.sample_type), sample_id_all, &pevent->sample); -if (err) { -pr_err ("Can't parse sample, err = %d\n" , err); - goto end; - } - +if (err) +return PyErr_Format (PyExc_OSError, +"perf: can't parse sample, err=%d" , err);return pyevent; } -end: +Py_INCREF (Py_None);return Py_None; }