From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@redhat.com>,
Namhyung Kim <namhyung@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Tzvetomir Stoyanov <tstoyanov@vmware.com>
Subject: [PATCH 09/15] tools/lib/traceevent: Remove tep filter trivial APIs
Date: Mon, 01 Apr 2019 12:43:14 -0400 [thread overview]
Message-ID: <20190401164343.968458918@goodmis.org> (raw)
In-Reply-To: 20190401164305.359125441@goodmis.org
From: Tzvetomir Stoyanov <tstoyanov@vmware.com>
This patch removes trivial filter tep APIs:
enum tep_filter_trivial_type
tep_filter_event_has_trivial()
tep_update_trivial()
tep_filter_clear_trivial()
Trivial filters is an optimization, used only in the first
version of KernelShark. The API is deprecated, the next KernelShark
release does not use it.
Link: http://lkml.kernel.org/r/20190326154328.28718-4-tstoyanov@vmware.com
Signed-off-by: Tzvetomir Stoyanov <tstoyanov@vmware.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
tools/lib/traceevent/event-parse.h | 16 ---
tools/lib/traceevent/parse-filter.c | 169 ----------------------------
2 files changed, 185 deletions(-)
diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h
index be082f9692f1..3833d1384599 100644
--- a/tools/lib/traceevent/event-parse.h
+++ b/tools/lib/traceevent/event-parse.h
@@ -732,12 +732,6 @@ struct tep_event_filter *tep_filter_alloc(struct tep_handle *pevent);
#define FILTER_MISS TEP_ERRNO__FILTER_MISS
#define FILTER_MATCH TEP_ERRNO__FILTER_MATCH
-enum tep_filter_trivial_type {
- TEP_FILTER_TRIVIAL_FALSE,
- TEP_FILTER_TRIVIAL_TRUE,
- TEP_FILTER_TRIVIAL_BOTH,
-};
-
enum tep_errno tep_filter_add_filter_str(struct tep_event_filter *filter,
const char *filter_str);
@@ -752,9 +746,6 @@ int tep_event_filtered(struct tep_event_filter *filter,
void tep_filter_reset(struct tep_event_filter *filter);
-int tep_filter_clear_trivial(struct tep_event_filter *filter,
- enum tep_filter_trivial_type type);
-
void tep_filter_free(struct tep_event_filter *filter);
char *tep_filter_make_string(struct tep_event_filter *filter, int event_id);
@@ -762,15 +753,8 @@ char *tep_filter_make_string(struct tep_event_filter *filter, int event_id);
int tep_filter_remove_event(struct tep_event_filter *filter,
int event_id);
-int tep_filter_event_has_trivial(struct tep_event_filter *filter,
- int event_id,
- enum tep_filter_trivial_type type);
-
int tep_filter_copy(struct tep_event_filter *dest, struct tep_event_filter *source);
-int tep_update_trivial(struct tep_event_filter *dest, struct tep_event_filter *source,
- enum tep_filter_trivial_type type);
-
int tep_filter_compare(struct tep_event_filter *filter1, struct tep_event_filter *filter2);
#endif /* _PARSE_EVENTS_H */
diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c
index cb5ce66dab6e..4ffd8b25a852 100644
--- a/tools/lib/traceevent/parse-filter.c
+++ b/tools/lib/traceevent/parse-filter.c
@@ -1522,167 +1522,6 @@ int tep_filter_copy(struct tep_event_filter *dest, struct tep_event_filter *sour
return ret;
}
-
-/**
- * tep_update_trivial - update the trivial filters with the given filter
- * @dest - the filter to update
- * @source - the filter as the source of the update
- * @type - the type of trivial filter to update.
- *
- * Scan dest for trivial events matching @type to replace with the source.
- *
- * Returns 0 on success and -1 if there was a problem updating, but
- * events may have still been updated on error.
- */
-int tep_update_trivial(struct tep_event_filter *dest, struct tep_event_filter *source,
- enum tep_filter_trivial_type type)
-{
- struct tep_handle *src_pevent;
- struct tep_handle *dest_pevent;
- struct tep_event *event;
- struct tep_filter_type *filter_type;
- struct tep_filter_arg *arg;
- char *str;
- int i;
-
- src_pevent = source->pevent;
- dest_pevent = dest->pevent;
-
- /* Do nothing if either of the filters has nothing to filter */
- if (!dest->filters || !source->filters)
- return 0;
-
- for (i = 0; i < dest->filters; i++) {
- filter_type = &dest->event_filters[i];
- arg = filter_type->filter;
- if (arg->type != TEP_FILTER_ARG_BOOLEAN)
- continue;
- if ((arg->boolean.value && type == TEP_FILTER_TRIVIAL_FALSE) ||
- (!arg->boolean.value && type == TEP_FILTER_TRIVIAL_TRUE))
- continue;
-
- event = filter_type->event;
-
- if (src_pevent != dest_pevent) {
- /* do a look up */
- event = tep_find_event_by_name(src_pevent,
- event->system,
- event->name);
- if (!event)
- return -1;
- }
-
- str = tep_filter_make_string(source, event->id);
- if (!str)
- continue;
-
- /* Don't bother if the filter is trivial too */
- if (strcmp(str, "TRUE") != 0 && strcmp(str, "FALSE") != 0)
- filter_event(dest, event, str, NULL);
- free(str);
- }
- return 0;
-}
-
-/**
- * tep_filter_clear_trivial - clear TRUE and FALSE filters
- * @filter: the filter to remove trivial filters from
- * @type: remove only true, false, or both
- *
- * Removes filters that only contain a TRUE or FALES boolean arg.
- *
- * Returns 0 on success and -1 if there was a problem.
- */
-int tep_filter_clear_trivial(struct tep_event_filter *filter,
- enum tep_filter_trivial_type type)
-{
- struct tep_filter_type *filter_type;
- int count = 0;
- int *ids = NULL;
- int i;
-
- if (!filter->filters)
- return 0;
-
- /*
- * Two steps, first get all ids with trivial filters.
- * then remove those ids.
- */
- for (i = 0; i < filter->filters; i++) {
- int *new_ids;
-
- filter_type = &filter->event_filters[i];
- if (filter_type->filter->type != TEP_FILTER_ARG_BOOLEAN)
- continue;
- switch (type) {
- case TEP_FILTER_TRIVIAL_FALSE:
- if (filter_type->filter->boolean.value)
- continue;
- break;
- case TEP_FILTER_TRIVIAL_TRUE:
- if (!filter_type->filter->boolean.value)
- continue;
- default:
- break;
- }
-
- new_ids = realloc(ids, sizeof(*ids) * (count + 1));
- if (!new_ids) {
- free(ids);
- return -1;
- }
-
- ids = new_ids;
- ids[count++] = filter_type->event_id;
- }
-
- if (!count)
- return 0;
-
- for (i = 0; i < count; i++)
- tep_filter_remove_event(filter, ids[i]);
-
- free(ids);
- return 0;
-}
-
-/**
- * tep_filter_event_has_trivial - return true event contains trivial filter
- * @filter: the filter with the information
- * @event_id: the id of the event to test
- * @type: trivial type to test for (TRUE, FALSE, EITHER)
- *
- * Returns 1 if the event contains a matching trivial type
- * otherwise 0.
- */
-int tep_filter_event_has_trivial(struct tep_event_filter *filter,
- int event_id,
- enum tep_filter_trivial_type type)
-{
- struct tep_filter_type *filter_type;
-
- if (!filter->filters)
- return 0;
-
- filter_type = find_filter_type(filter, event_id);
-
- if (!filter_type)
- return 0;
-
- if (filter_type->filter->type != TEP_FILTER_ARG_BOOLEAN)
- return 0;
-
- switch (type) {
- case TEP_FILTER_TRIVIAL_FALSE:
- return !filter_type->filter->boolean.value;
-
- case TEP_FILTER_TRIVIAL_TRUE:
- return filter_type->filter->boolean.value;
- default:
- return 1;
- }
-}
-
static int test_filter(struct tep_event *event, struct tep_filter_arg *arg,
struct tep_record *record, enum tep_errno *err);
@@ -2409,14 +2248,6 @@ int tep_filter_compare(struct tep_event_filter *filter1, struct tep_event_filter
break;
if (filter_type1->filter->type != filter_type2->filter->type)
break;
- switch (filter_type1->filter->type) {
- case TEP_FILTER_TRIVIAL_FALSE:
- case TEP_FILTER_TRIVIAL_TRUE:
- /* trivial types just need the type compared */
- continue;
- default:
- break;
- }
/* The best way to compare complex filters is with strings */
str1 = arg_to_str(filter1, filter_type1->filter);
str2 = arg_to_str(filter2, filter_type2->filter);
--
2.20.1
next prev parent reply other threads:[~2019-04-01 16:44 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-01 16:43 [PATCH 00/15] tools/lib/traceevent: Continuing on the path to a stand alone library Steven Rostedt
2019-04-01 16:43 ` [PATCH 01/15] tools lib traceevent: Handle trace_printk() "%px" Steven Rostedt
2019-04-05 11:41 ` [tip:perf/core] " tip-bot for Steven Rostedt (VMware)
2019-04-01 16:43 ` [PATCH 02/15] tools/lib/traceevent: Add mono clocks to be parsed in seconds Steven Rostedt
2019-04-05 11:42 ` [tip:perf/core] tools lib traceevent: " tip-bot for Steven Rostedt (VMware)
2019-04-01 16:43 ` [PATCH 03/15] tools lib traceevent: Implement a new API, tep_list_events_copy() Steven Rostedt
2019-04-05 11:42 ` [tip:perf/core] " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 04/15] tools/lib/traceevent: Add more debugging to see various internal ring buffer entries Steven Rostedt
2019-04-05 11:43 ` [tip:perf/core] tools lib traceevent: " tip-bot for Steven Rostedt (Red Hat)
2019-04-01 16:43 ` [PATCH 05/15] tools/lib/traceevent: Change description of few APIs Steven Rostedt
2019-04-05 11:44 ` [tip:perf/core] tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 06/15] tools/lib/traceevent: Coding style fixes Steven Rostedt
2019-04-05 11:44 ` [tip:perf/core] tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 07/15] tools/lib/traceevent: Implement new traceevent APIs for accessing struct tep_handler fields Steven Rostedt
2019-04-05 11:45 ` [tip:perf/core] tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 08/15] tools/lib/traceevent: Removed unneeded !! and return parenthesis Steven Rostedt
2019-04-05 11:46 ` [tip:perf/core] tools lib traceevent: " tip-bot for Steven Rostedt (VMware)
2019-04-01 16:43 ` Steven Rostedt [this message]
2019-04-05 11:47 ` [tip:perf/core] tools lib traceevent: Remove tep filter trivial APIs tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 10/15] tools/lib/traceevent: Remove call to exit() from tep_filter_add_filter_str() Steven Rostedt
2019-04-05 11:47 ` [tip:perf/core] tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 11/15] tools/perf,tools/lib/traceevent: Make traceevent APIs more consistent Steven Rostedt
2019-04-05 11:48 ` [tip:perf/core] tools tools, tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 12/15] tools/lib/traceevent: Rename input arguments of libtraceevent APIs from pevent to tep Steven Rostedt
2019-04-05 11:49 ` [tip:perf/core] tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 13/15] tools/perf,tools/lib/traceevent: Rename "pevent" member of struct tep_event to "tep" Steven Rostedt
2019-04-05 11:49 ` [tip:perf/core] perf tools, tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 14/15] tools/perf,tools/lib/traceevent: Rename "pevent" member of struct tep_event_filter " Steven Rostedt
2019-04-05 11:50 ` [tip:perf/core] perf tools, tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 16:43 ` [PATCH 15/15] tools/lib/traceevent: Rename input arguments and local variables of libtraceevent from pevent to tep Steven Rostedt
2019-04-05 11:51 ` [tip:perf/core] tools lib traceevent: " tip-bot for Tzvetomir Stoyanov
2019-04-01 18:17 ` [PATCH 00/15] tools/lib/traceevent: Continuing on the path to a stand alone library Arnaldo Carvalho de Melo
-- strict thread matches above, loose matches on Subject: below --
2019-03-27 14:19 [PATCH v2 0/5] Cleanup traceevent API and make it more consistent Tzvetomir Stoyanov
2019-03-27 14:19 ` [PATCH v2 1/5] tools/perf,tools/lib/traceevent: Make traceevent APIs " Tzvetomir Stoyanov
2019-03-27 14:41 ` Steven Rostedt
2019-03-27 14:19 ` [PATCH v2 2/5] tools/lib/traceevent: Rename input arguments of libtraceevent APIs from pevent to tep Tzvetomir Stoyanov
2019-03-27 15:06 ` Steven Rostedt
2019-03-27 14:19 ` [PATCH v2 3/5] tools/perf,tools/lib/traceevent: Rename "pevent" member of struct tep_event to "tep" Tzvetomir Stoyanov
2019-03-27 14:19 ` [PATCH v2 4/5] tools/perf,tools/lib/traceevent: Rename "pevent" member of struct tep_event_filter " Tzvetomir Stoyanov
2019-03-27 14:19 ` [PATCH v2 5/5] tools/lib/traceevent: Rename input arguments and local variables of libtraceevent from pevent to tep Tzvetomir Stoyanov
2019-03-26 15:43 [PATCH 0/8] Cleanup traceevent API and make it more consistent Tzvetomir Stoyanov
2019-03-26 15:43 ` [PATCH 1/8] tools/perf,tools/lib/traceevent: Make traceevent APIs " Tzvetomir Stoyanov
2019-03-26 19:43 ` Steven Rostedt
2019-03-26 15:43 ` [PATCH 2/8] tools/lib/traceevent: Add counter to track parsing failures Tzvetomir Stoyanov
2019-03-26 19:48 ` Steven Rostedt
2019-03-26 15:43 ` [PATCH 3/8] tools/lib/traceevent: Remove tep filter trivial APIs Tzvetomir Stoyanov
2019-03-26 19:50 ` Steven Rostedt
2019-03-26 15:43 ` [PATCH 4/8] tools/lib/traceevent: rename input arguments of libtraceevent APIs from pevent to tep Tzvetomir Stoyanov
2019-03-26 19:57 ` Steven Rostedt
2019-03-26 19:58 ` Steven Rostedt
2019-03-26 15:43 ` [PATCH 5/8] tools/perf,tools/lib/traceevent: rename "pevent" member of struct tep_event to "tep" Tzvetomir Stoyanov
2019-03-26 15:43 ` [PATCH 6/8] tools/perf,tools/lib/traceevent: rename "pevent" member of struct tep_event_filter " Tzvetomir Stoyanov
2019-03-26 15:43 ` [PATCH 7/8] tools/lib/traceevent: rename input arguments and local variables of libtraceevent from pevent to tep Tzvetomir Stoyanov
2019-03-26 15:43 ` [PATCH 8/8] tools/lib/traceevent: remove call to exit() from tep_filter_add_filter_str() Tzvetomir Stoyanov
2019-03-26 20:02 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190401164343.968458918@goodmis.org \
--to=rostedt@goodmis.org \
--cc=acme@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=tstoyanov@vmware.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.