• Arnaldo Carvalho de Melo's avatar
    perf augmented_raw_syscalls: Tell which args are filenames and how many bytes to copy · 4cae8675
    Arnaldo Carvalho de Melo authored
    Since we know what args are strings from reading the syscall
    descriptions in tracefs and also already mark such args to be beautified
    using the syscall_arg__scnprintf_filename() helper, all we need is to
    fill in this info in the 'syscalls' BPF map we were using to state which
    syscalls the user is interested in, i.e. the syscall filter.
    
    Right now just set that with PATH_MAX and unroll the syscall arg in the
    BPF program, as the verifier isn't liking something clang generates when
    unrolling the loop.
    
    This also makes the augmented_raw_syscalls.c program support all arches,
    since we removed that set of defines with the hard coded syscall
    numbers, all should be automatically set for all arches, with the
    syscall id mapping done correcly.
    
    Doing baby steps here, i.e. just the first string arg for a syscall is
    printed, syscalls with more than one, say, the various rename* syscalls,
    need further work, but lets get first something that the BPF verifier
    accepts before increasing the complexity
    
    To test it, something like:
    
     # perf trace -e string -e /home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.c
    
    With:
    
      # cat ~/.perfconfig
      [llvm]
    	dump-obj = true
    	clang-opt = -g
      [trace]
    	#add_events = /home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.c
    	show_zeros = yes
    	show_duration = no
    	no_inherit = yes
    	show_timestamp = no
    	show_arg_names = no
    	args_alignment = 40
    	show_prefix = yes
      #
    
    That commented add_events line is needed for developing this
    augmented_raw_syscalls.c BPF program, as if we add it via the
    'add_events' mechanism so as to shorten the 'perf trace' command lines,
    then we end up not setting up the -v option which precludes us having
    access to the bpf verifier log :-\
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: Andrii Nakryiko <andriin@fb.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jesper Dangaard Brouer <brouer@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Yonghong Song <yhs@fb.com>
    Link: https://lkml.kernel.org/n/tip-dn863ya0cbsqycxuy0olvbt1@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    4cae8675
builtin-trace.c 114 KB