mirror of https://gitee.com/openkylin/linux.git
ftrace: add not to regex on filtering functions
Impact: enhancement Ingo Molnar has asked about a way to remove items from the filter lists. Currently, you can only add or replace items. The way items are added to the list is through opening one of the list files (set_ftrace_filter or set_ftrace_notrace) via append. If the file is opened for truncate, the list is cleared. echo spin_lock > /debug/tracing/set_ftrace_filter The above will replace the list with only spin_lock echo spin_lock >> /debug/tracing/set_ftrace_filter The above will add spin_lock to the list. Now this patch adds: echo '!spin_lock' >> /debug/tracing/set_ftrace_filter This will remove spin_lock from the list. The limited glob features of these lists also can be notted. echo '!spin_*' >> /debug/tracing/set_ftrace_filter This will remove all functions that start with 'spin_' Note: echo '!spin_*' > /debug/tracing/set_ftrace_filter will simply clear out the list (notice the '>' instead of '>>') Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
e05a43b744
commit
ea3a6d6d60
|
@ -1047,6 +1047,13 @@ ftrace_match(unsigned char *buff, int len, int enable)
|
|||
int type = MATCH_FULL;
|
||||
unsigned long flag = enable ? FTRACE_FL_FILTER : FTRACE_FL_NOTRACE;
|
||||
unsigned i, match = 0, search_len = 0;
|
||||
int not = 0;
|
||||
|
||||
if (buff[0] == '!') {
|
||||
not = 1;
|
||||
buff++;
|
||||
len--;
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
if (buff[i] == '*') {
|
||||
|
@ -1100,8 +1107,12 @@ ftrace_match(unsigned char *buff, int len, int enable)
|
|||
matched = 1;
|
||||
break;
|
||||
}
|
||||
if (matched)
|
||||
rec->flags |= flag;
|
||||
if (matched) {
|
||||
if (not)
|
||||
rec->flags &= ~flag;
|
||||
else
|
||||
rec->flags |= flag;
|
||||
}
|
||||
}
|
||||
pg = pg->next;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue