From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755464AbbIHOkf (ORCPT ); Tue, 8 Sep 2015 10:40:35 -0400 Received: from terminus.zytor.com ([198.137.202.10]:52528 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755189AbbIHOkb (ORCPT ); Tue, 8 Sep 2015 10:40:31 -0400 Date: Tue, 8 Sep 2015 07:40:03 -0700 From: tip-bot for Namhyung Kim Message-ID: Cc: masami.hiramatsu.pt@hitachi.com, acme@redhat.com, namhyung@kernel.org, linux-kernel@vger.kernel.org, a.p.zijlstra@chello.nl, hpa@zytor.com, mingo@kernel.org, tglx@linutronix.de, wangnan0@huawei.com, jolsa@redhat.com Reply-To: jolsa@redhat.com, linux-kernel@vger.kernel.org, masami.hiramatsu.pt@hitachi.com, acme@redhat.com, namhyung@kernel.org, wangnan0@huawei.com, tglx@linutronix.de, hpa@zytor.com, mingo@kernel.org, a.p.zijlstra@chello.nl In-Reply-To: <1441368963-11565-4-git-send-email-namhyung@kernel.org> References: <1441368963-11565-4-git-send-email-namhyung@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf probe: Split del_perf_probe_events() Git-Commit-ID: e7895e422e4da63daedacad0a2ed1a5a6b502d66 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: e7895e422e4da63daedacad0a2ed1a5a6b502d66 Gitweb: http://git.kernel.org/tip/e7895e422e4da63daedacad0a2ed1a5a6b502d66 Author: Namhyung Kim AuthorDate: Fri, 4 Sep 2015 21:16:02 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Fri, 4 Sep 2015 12:43:19 -0300 perf probe: Split del_perf_probe_events() The del_perf_probe_events() does 2 things: 1. find existing events which match to filter 2. delete such trace events from kernel But sometimes we need to do something with the trace events. So split the funtion into two, so that it can access intermediate trace events name using strlist if needed. Signed-off-by: Namhyung Kim Acked-by: Masami Hiramatsu Cc: Jiri Olsa Cc: Peter Zijlstra Cc: Wang Nan Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1441368963-11565-4-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/probe-file.c | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c index bbb2437..f00b0df 100644 --- a/tools/perf/util/probe-file.c +++ b/tools/perf/util/probe-file.c @@ -275,7 +275,8 @@ error: return ret; } -int probe_file__del_events(int fd, struct strfilter *filter) +static int probe_file__get_events(int fd, struct strfilter *filter, + struct strlist *plist) { struct strlist *namelist; struct str_node *ent; @@ -290,12 +291,43 @@ int probe_file__del_events(int fd, struct strfilter *filter) p = strchr(ent->s, ':'); if ((p && strfilter__compare(filter, p + 1)) || strfilter__compare(filter, ent->s)) { - ret = __del_trace_probe_event(fd, ent); - if (ret < 0) - break; + strlist__add(plist, ent->s); + ret = 0; } } strlist__delete(namelist); return ret; } + +static int probe_file__del_strlist(int fd, struct strlist *namelist) +{ + int ret = 0; + struct str_node *ent; + + strlist__for_each(ent, namelist) { + ret = __del_trace_probe_event(fd, ent); + if (ret < 0) + break; + } + return ret; +} + +int probe_file__del_events(int fd, struct strfilter *filter) +{ + struct strlist *namelist; + int ret; + + namelist = strlist__new(NULL, NULL); + if (!namelist) + return -ENOMEM; + + ret = probe_file__get_events(fd, filter, namelist); + if (ret < 0) + return ret; + + ret = probe_file__del_strlist(fd, namelist); + strlist__delete(namelist); + + return ret; +}