tracing: Auto generate event name when creating a group of events
Currently when creating a specific group of trace events, take kprobe event as example, the user must use the following format: p:GRP/EVENT [MOD:]KSYM[+OFFS]|KADDR [FETCHARGS], which means user must enter EVENT name, one example is: echo 'p:usb_gadget/config_usb_cfg_link config_usb_cfg_link $arg1' >> kprobe_events It is not simple if there are too many entries because the event name is the same as symbol name. This change allows user to specify no EVENT name, format changed as: p:GRP/ [MOD:]KSYM[+OFFS]|KADDR [FETCHARGS] It will generate event name automatically and one example is: echo 'p:usb_gadget/ config_usb_cfg_link $arg1' >> kprobe_events. Link: https://lore.kernel.org/all/1656296348-16111-4-git-send-email-quic_linyyuan@quicinc.com/ Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Reviewed-by: Tom Zanussi <zanussi@kernel.org> Signed-off-by: Linyu Yuan <quic_linyyuan@quicinc.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
committed by
Steven Rostedt (Google)
parent
f360ea5641
commit
95c104c378
@@ -312,7 +312,8 @@ static bool trace_uprobe_match(const char *system, const char *event,
|
||||
{
|
||||
struct trace_uprobe *tu = to_trace_uprobe(ev);
|
||||
|
||||
return strcmp(trace_probe_name(&tu->tp), event) == 0 &&
|
||||
return (event[0] == '\0' ||
|
||||
strcmp(trace_probe_name(&tu->tp), event) == 0) &&
|
||||
(!system || strcmp(trace_probe_group_name(&tu->tp), system) == 0) &&
|
||||
trace_uprobe_match_command_head(tu, argc, argv);
|
||||
}
|
||||
@@ -532,7 +533,7 @@ end:
|
||||
|
||||
/*
|
||||
* Argument syntax:
|
||||
* - Add uprobe: p|r[:[GRP/]EVENT] PATH:OFFSET[%return][(REF)] [FETCHARGS]
|
||||
* - Add uprobe: p|r[:[GRP/][EVENT]] PATH:OFFSET[%return][(REF)] [FETCHARGS]
|
||||
*/
|
||||
static int __trace_uprobe_create(int argc, const char **argv)
|
||||
{
|
||||
@@ -540,6 +541,7 @@ static int __trace_uprobe_create(int argc, const char **argv)
|
||||
const char *event = NULL, *group = UPROBE_EVENT_SYSTEM;
|
||||
char *arg, *filename, *rctr, *rctr_end, *tmp;
|
||||
char buf[MAX_EVENT_NAME_LEN];
|
||||
char gbuf[MAX_EVENT_NAME_LEN];
|
||||
enum probe_print_type ptype;
|
||||
struct path path;
|
||||
unsigned long offset, ref_ctr_offset;
|
||||
@@ -644,11 +646,13 @@ static int __trace_uprobe_create(int argc, const char **argv)
|
||||
/* setup a probe */
|
||||
trace_probe_log_set_index(0);
|
||||
if (event) {
|
||||
ret = traceprobe_parse_event_name(&event, &group, buf,
|
||||
ret = traceprobe_parse_event_name(&event, &group, gbuf,
|
||||
event - argv[0]);
|
||||
if (ret)
|
||||
goto fail_address_parse;
|
||||
} else {
|
||||
}
|
||||
|
||||
if (!event) {
|
||||
char *tail;
|
||||
char *ptr;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user