summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolay Marchuk <marchuk.nikolay.a@gmail.com>2017-08-28 09:54:44 +0700
committerDmitry V. Levin <ldv@altlinux.org>2017-12-21 13:12:36 +0000
commit7d93fbe00e2525601cf637aaed8787e6556e405d (patch)
tree597d54e78790a8f309b9e8698bb17fdbbafa6e02
parent70a8481f6d8268951cab4544e435eaf27ea1f74b (diff)
downloadstrace-7d93fbe00e2525601cf637aaed8787e6556e405d.tar.gz
Optimize default filtering
* filter_action.c (default_flags): Add default flags variable. (add_action): Update default flags. (filter_syscall): Add default_flags to qual_flg. (filtering_parse_finish): Init trace action for pathtracing. * strace.c (init): Remove default filters.
-rw-r--r--filter_action.c6
-rw-r--r--strace.c3
2 files changed, 6 insertions, 3 deletions
diff --git a/filter_action.c b/filter_action.c
index fb8c3c1d6..0a0b72f25 100644
--- a/filter_action.c
+++ b/filter_action.c
@@ -62,6 +62,7 @@ struct filter_action {
void *priv_data;
};
+static unsigned int default_flags = DEFAULT_QUAL_FLAGS;
static struct filter_action *filter_actions;
static unsigned int nfilter_actions;
@@ -141,6 +142,10 @@ add_action(const struct filter_action_type *type)
{
struct filter_action *action;
+ /* Update default_flags */
+ if (default_flags & type->qual_flg)
+ default_flags &= ~type->qual_flg;
+
filter_actions = xreallocarray(filter_actions, ++nfilter_actions,
sizeof(struct filter_action));
action = &filter_actions[nfilter_actions - 1];
@@ -200,6 +205,7 @@ filter_syscall(struct tcb *tcp)
{
unsigned int i;
+ tcp->qual_flg |= default_flags;
for (i = 0; i < nfilter_actions; ++i)
run_filter_action(tcp, &filter_actions[i]);
}
diff --git a/strace.c b/strace.c
index 8a1cf0cdc..12f8e6dc2 100644
--- a/strace.c
+++ b/strace.c
@@ -1570,9 +1570,6 @@ init(int argc, char *argv[])
shared_log = stderr;
set_sortby(DEFAULT_SORTBY);
set_personality(DEFAULT_PERSONALITY);
- qualify("trace=all");
- qualify("abbrev=all");
- qualify("verbose=all");
#if DEFAULT_QUAL_FLAGS != (QUAL_TRACE | QUAL_ABBREV | QUAL_VERBOSE)
# error Bug in DEFAULT_QUAL_FLAGS
#endif