diff options
author | Nikolay Marchuk <marchuk.nikolay.a@gmail.com> | 2017-08-28 09:54:44 +0700 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2017-12-21 13:12:36 +0000 |
commit | 7d93fbe00e2525601cf637aaed8787e6556e405d (patch) | |
tree | 597d54e78790a8f309b9e8698bb17fdbbafa6e02 | |
parent | 70a8481f6d8268951cab4544e435eaf27ea1f74b (diff) | |
download | strace-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.c | 6 | ||||
-rw-r--r-- | strace.c | 3 |
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]); } @@ -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 |