tracing/uprobe: Add per-probe delete from event
Add per-probe delete method from one event passing the head of definition. In other words, the events which match the head N parameters are deleted. Link: http://lkml.kernel.org/r/156095689811.28024.221706761151739433.stgit@devnote2 Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
eb5bf81330
commit
ab10d69eb7
|
@ -284,13 +284,42 @@ static bool trace_uprobe_is_busy(struct dyn_event *ev)
|
|||
return trace_probe_is_enabled(&tu->tp);
|
||||
}
|
||||
|
||||
static bool trace_uprobe_match_command_head(struct trace_uprobe *tu,
|
||||
int argc, const char **argv)
|
||||
{
|
||||
char buf[MAX_ARGSTR_LEN + 1];
|
||||
int len;
|
||||
|
||||
if (!argc)
|
||||
return true;
|
||||
|
||||
len = strlen(tu->filename);
|
||||
if (strncmp(tu->filename, argv[0], len) || argv[0][len] != ':')
|
||||
return false;
|
||||
|
||||
if (tu->ref_ctr_offset == 0)
|
||||
snprintf(buf, sizeof(buf), "0x%0*lx",
|
||||
(int)(sizeof(void *) * 2), tu->offset);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "0x%0*lx(0x%lx)",
|
||||
(int)(sizeof(void *) * 2), tu->offset,
|
||||
tu->ref_ctr_offset);
|
||||
if (strcmp(buf, &argv[0][len + 1]))
|
||||
return false;
|
||||
|
||||
argc--; argv++;
|
||||
|
||||
return trace_probe_match_command_args(&tu->tp, argc, argv);
|
||||
}
|
||||
|
||||
static bool trace_uprobe_match(const char *system, const char *event,
|
||||
int argc, const char **argv, struct dyn_event *ev)
|
||||
{
|
||||
struct trace_uprobe *tu = to_trace_uprobe(ev);
|
||||
|
||||
return strcmp(trace_probe_name(&tu->tp), event) == 0 &&
|
||||
(!system || strcmp(trace_probe_group_name(&tu->tp), system) == 0);
|
||||
(!system || strcmp(trace_probe_group_name(&tu->tp), system) == 0) &&
|
||||
trace_uprobe_match_command_head(tu, argc, argv);
|
||||
}
|
||||
|
||||
static nokprobe_inline struct trace_uprobe *
|
||||
|
|
Loading…
Reference in New Issue