Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1232718

[PATCH v2 1/4] perf tools: Adds the config_term callback for different type events

From He Kuang <hekuang@huawei.com>
Newsgroups linux.kernel
Subject [PATCH v2 1/4] perf tools: Adds the config_term callback for different type events
Date 2015-09-25 13:20 +0200
Message-ID <qczcJ-88V-5@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


Currently, function config_term() is used for checking config terms of
all types of events, while unknown terms is not reported as an error
because pmu events have valid terms in sysfs. But this is wrong when
unknown terms are specificed to hw/sw events. This patch Adds the
config_term callback so we can use separate check routines for each
type of events.

Signed-off-by: He Kuang <hekuang@huawei.com>
---
 tools/perf/util/parse-events.c | 34 ++++++++++++++++++++++++----------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 61c2bc2..aa64cf3 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -599,7 +599,11 @@ static int check_type_val(struct parse_events_term *term,
 	return -EINVAL;
 }
 
-static int config_term(struct perf_event_attr *attr,
+typedef int config_term_func_t(struct perf_event_attr *attr,
+			       struct parse_events_term *term,
+			       struct parse_events_error *err);
+
+static int config_term_common(struct perf_event_attr *attr,
 		       struct parse_events_term *term,
 		       struct parse_events_error *err)
 {
@@ -610,12 +614,6 @@ do {									   \
 } while (0)
 
 	switch (term->type_term) {
-	case PARSE_EVENTS__TERM_TYPE_USER:
-		/*
-		 * Always succeed for sysfs terms, as we dont know
-		 * at this point what type they need to have.
-		 */
-		return 0;
 	case PARSE_EVENTS__TERM_TYPE_CONFIG:
 		CHECK_TYPE_VAL(NUM);
 		attr->config = term->val.num;
@@ -665,9 +663,24 @@ do {									   \
 #undef CHECK_TYPE_VAL
 }
 
+static int config_term_pmu(struct perf_event_attr *attr,
+		       struct parse_events_term *term,
+		       struct parse_events_error *err)
+{
+	if (term->type_term == PARSE_EVENTS__TERM_TYPE_USER)
+		/*
+		 * Always succeed for sysfs terms, as we dont know
+		 * at this point what type they need to have.
+		 */
+		return 0;
+	else
+		return config_term_common(attr, term, err);
+}
+
 static int config_attr(struct perf_event_attr *attr,
 		       struct list_head *head,
-		       struct parse_events_error *err)
+		       struct parse_events_error *err,
+		       config_term_func_t config_term)
 {
 	struct parse_events_term *term;
 
@@ -735,7 +748,8 @@ int parse_events_add_numeric(struct parse_events_evlist *data,
 	attr.config = config;
 
 	if (head_config) {
-		if (config_attr(&attr, head_config, data->error))
+		if (config_attr(&attr, head_config, data->error,
+				config_term_common))
 			return -EINVAL;
 
 		if (get_config_terms(head_config, &config_terms))
@@ -795,7 +809,7 @@ int parse_events_add_pmu(struct parse_events_evlist *data,
 	 * Configure hardcoded terms first, no need to check
 	 * return value when called with fail == 0 ;)
 	 */
-	if (config_attr(&attr, head_config, data->error))
+	if (config_attr(&attr, head_config, data->error, config_term_pmu))
 		return -EINVAL;
 
 	if (get_config_terms(head_config, &config_terms))
-- 
1.8.5.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH v2 1/4] perf tools: Adds the config_term callback for different type events He Kuang <hekuang@huawei.com> - 2015-09-25 13:20 +0200
  [PATCH v2 2/4] perf tools: Prompt error message for wrong terms of hw/sw events He Kuang <hekuang@huawei.com> - 2015-09-25 13:20 +0200
    Re: [PATCH v2 2/4] perf tools: Prompt error message for wrong terms  of hw/sw events Jiri Olsa <jolsa@redhat.com> - 2015-09-27 22:30 +0200
    Re: [PATCH v2 2/4] perf tools: Prompt error message for wrong terms  of hw/sw events Jiri Olsa <jolsa@redhat.com> - 2015-09-27 22:30 +0200
    Re: [PATCH v2 2/4] perf tools: Prompt error message for wrong terms  of hw/sw events Jiri Olsa <jolsa@redhat.com> - 2015-09-27 22:40 +0200
  [PATCH v2 4/4] perf tools: Enable event_config terms to tracepoint events He Kuang <hekuang@huawei.com> - 2015-09-25 13:20 +0200
    Re: [PATCH v2 4/4] perf tools: Enable event_config terms to  tracepoint events Jiri Olsa <jolsa@redhat.com> - 2015-09-27 22:50 +0200

csiph-web