tracing/kprobes: Use dyn_event framework for kprobe events

Use dyn_event framework for kprobe events. This shows
kprobe events on "tracing/dynamic_events" file.

User can also define new events via tracing/dynamic_events.

Link: http://lkml.kernel.org/r/154140855646.17322.6619219995865980392.stgit@devbox

Reviewed-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Tested-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Masami Hiramatsu
2018-11-05 18:02:36 +09:00
committed by Steven Rostedt (VMware)
parent 5448d44c38
commit 6212dd2968
5 changed files with 210 additions and 148 deletions

View File

@@ -154,6 +154,33 @@ int traceprobe_split_symbol_offset(char *symbol, long *offset)
return 0;
}
/* @buf must has MAX_EVENT_NAME_LEN size */
int traceprobe_parse_event_name(const char **pevent, const char **pgroup,
char *buf)
{
const char *slash, *event = *pevent;
slash = strchr(event, '/');
if (slash) {
if (slash == event) {
pr_info("Group name is not specified\n");
return -EINVAL;
}
if (slash - event + 1 > MAX_EVENT_NAME_LEN) {
pr_info("Group name is too long\n");
return -E2BIG;
}
strlcpy(buf, event, slash - event + 1);
*pgroup = buf;
*pevent = slash + 1;
}
if (strlen(event) == 0) {
pr_info("Event name is not specified\n");
return -EINVAL;
}
return 0;
}
#define PARAM_MAX_STACK (THREAD_SIZE / sizeof(unsigned long))
static int parse_probe_vars(char *arg, const struct fetch_type *t,