• Tzvetomir Stoyanov (VMware)'s avatar
    tracing: Add a probe that attaches to trace events · 7491e2c4
    Tzvetomir Stoyanov (VMware) authored
    A new dynamic event is introduced: event probe. The event is attached
    to an existing tracepoint and uses its fields as arguments. The user
    can specify custom format string of the new event, select what tracepoint
    arguments will be printed and how to print them.
    An event probe is created by writing configuration string in
    'dynamic_events' ftrace file:
     e[:[SNAME/]ENAME] SYSTEM/EVENT [FETCHARGS]	- Set an event probe
     -:SNAME/ENAME					- Delete an event probe
    
    Where:
     SNAME	- System name, if omitted 'eprobes' is used.
     ENAME	- Name of the new event in SNAME, if omitted the SYSTEM_EVENT is used.
     SYSTEM	- Name of the system, where the tracepoint is defined, mandatory.
     EVENT	- Name of the tracepoint event in SYSTEM, mandatory.
     FETCHARGS - Arguments:
      <name>=$<field>[:TYPE] - Fetch given filed of the tracepoint and print
    			   it as given TYPE with given name. Supported
    			   types are:
    	                    (u8/u16/u32/u64/s8/s16/s32/s64), basic type
            	            (x8/x16/x32/x64), hexadecimal types
    			    "string", "ustring" and bitfield.
    
    Example, attach an event probe on openat system call and print name of the
    file that will be opened:
     echo "e:esys/eopen syscalls/sys_enter_openat file=\$filename:string" >> dynamic_events
    A new dynamic event is created in events/esys/eopen/ directory. It
    can be deleted with:
     echo "-:esys/eopen" >> dynamic_events
    
    Filters, triggers and histograms can be attached to the new event, it can
    be matched in synthetic events. There is one limitation - an event probe
    can not be attached to kprobe, uprobe or another event probe.
    
    Link: https://lkml.kernel.org/r/20210812145805.2292326-1-tz.stoyanov@gmail.com
    Link: https://lkml.kernel.org/r/20210819152825.142428383@goodmis.orgAcked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Co-developed-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: default avatarTzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    7491e2c4
trace_eprobe.c 21.2 KB