• Masami Hiramatsu (Google)'s avatar
    tracing/probes: Add symstr type for dynamic events · b26a124c
    Masami Hiramatsu (Google) authored
    Add 'symstr' type for storing the kernel symbol as a string data
    instead of the symbol address. This allows us to filter the
    events by wildcard symbol name.
    
    e.g.
      # echo 'e:wqfunc workqueue.workqueue_execute_start symname=$function:symstr' >> dynamic_events
      # cat events/eprobes/wqfunc/format
      name: wqfunc
      ID: 2110
      format:
      	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
      	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
      	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
      	field:int common_pid;	offset:4;	size:4;	signed:1;
    
      	field:__data_loc char[] symname;	offset:8;	size:4;	signed:1;
    
      print fmt: " symname=\"%s\"", __get_str(symname)
    
    Note that there is already 'symbol' type which just change the
    print format (so it still stores the symbol address in the tracing
    ring buffer.) On the other hand, 'symstr' type stores the actual
    "symbol+offset/size" data as a string.
    
    Link: https://lore.kernel.org/all/166679930847.1528100.4124308529180235965.stgit@devnote3/Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
    b26a124c
trace_probe_tmpl.h 6.33 KB