tracing/filter: Dynamically allocate preds
For every filter that is made, we create predicates to hold every operation within the filter. We have a max of 32 predicates that we can hold. Currently, we allocate all 32 even if we only need to use one. Part of the reason we do this is that the filter can be used at any moment by any event. Fortunately, the filter is only used with preemption disabled. By reseting the count of preds used "n_preds" to zero, then performing a synchronize_sched(), we can safely free and reallocate a new array of preds. Cc: Tom Zanussi <tzanussi@gmail.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
58d9a597c4
commit
c9c53ca03d
2 changed files with 111 additions and 37 deletions
|
@ -661,7 +661,8 @@ struct ftrace_event_field {
|
|||
};
|
||||
|
||||
struct event_filter {
|
||||
int n_preds;
|
||||
int n_preds; /* Number assigned */
|
||||
int a_preds; /* allocated */
|
||||
struct filter_pred **preds;
|
||||
char *filter_string;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue