From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752514AbbCXV35 (ORCPT ); Tue, 24 Mar 2015 17:29:57 -0400 Received: from mail.kernel.org ([198.145.29.136]:54051 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751876AbbCXV3z (ORCPT ); Tue, 24 Mar 2015 17:29:55 -0400 Date: Tue, 24 Mar 2015 18:29:56 -0300 From: Arnaldo Carvalho de Melo To: David Ahern Cc: linux-kernel@vger.kernel.org, Jiri Olsa , Namhyung Kim Subject: Re: [PATCH] perf tool: Add event name to error message for filters Message-ID: <20150324212956.GB12599@kernel.org> References: <1427213417-127183-1-git-send-email-david.ahern@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1427213417-127183-1-git-send-email-david.ahern@oracle.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Tue, Mar 24, 2015 at 12:10:17PM -0400, David Ahern escreveu: > Use of a bad filter currently generates the message: > Error: failed to set filter with 22 (Invalid argument) > > Add the event name to make it clear to which event the filter > failed to apply: > Error: Failed to set filter on event sched:sg_lb_stats: 22: Invalid argument > > Signed-off-by: David Ahern > Cc: Jiri Olsa > Cc: Namhyung Kim > +++ b/tools/perf/util/evsel.c > @@ -807,9 +807,19 @@ static int perf_evsel__run_ioctl(struct perf_evsel *evsel, int ncpus, int nthrea > int perf_evsel__set_filter(struct perf_evsel *evsel, int ncpus, int nthreads, > const char *filter) > { > - return perf_evsel__run_ioctl(evsel, ncpus, nthreads, > - PERF_EVENT_IOC_SET_FILTER, > - (void *)filter); > + int err; > + char msg[512]; > + > + err = perf_evsel__run_ioctl(evsel, ncpus, nthreads, > + PERF_EVENT_IOC_SET_FILTER, > + (void *)filter); > + if (err) { > + error("Failed to set filter on event %s: %d: %s\n", > + perf_evsel__name(evsel), errno, > + strerror_r(errno, msg, sizeof(msg))); Humm, probably this will be the only call to error() from evsel.c, making it require the error() routine, which in turn will break the python binding, lemme check... If that is the case we'll have to somehow propagate to the caller of perf_evlist__apply_filters what was the evsel that had a filter that caused the problem. - Arnaldo > + } > + > + return err; > } > > int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads) > -- > 2.2.1