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.
This commit is contained in:
Nikolay Marchuk 2017-08-28 09:54:44 +07:00 committed by Dmitry V. Levin
parent a732d730b7
commit 747169ad6d
2 changed files with 6 additions and 3 deletions

View File

@ -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;
@ -138,6 +139,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];
@ -193,6 +198,7 @@ set_qualify_mode(struct filter_action *action)
void
filter_syscall(struct tcb *tcp)
{
tcp->qual_flg |= default_flags;
for (unsigned int i = 0; i < nfilter_actions; ++i)
run_filter_action(tcp, &filter_actions[i]);
}

View File

@ -1586,9 +1586,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