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);
|
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,
|
static bool trace_uprobe_match(const char *system, const char *event,
|
||||||
int argc, const char **argv, struct dyn_event *ev)
|
int argc, const char **argv, struct dyn_event *ev)
|
||||||
{
|
{
|
||||||
struct trace_uprobe *tu = to_trace_uprobe(ev);
|
struct trace_uprobe *tu = to_trace_uprobe(ev);
|
||||||
|
|
||||||
return strcmp(trace_probe_name(&tu->tp), event) == 0 &&
|
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 *
|
static nokprobe_inline struct trace_uprobe *
|
||||||
|
|
Loading…
Reference in New Issue