On Mon, Mar 2, 2020 at 8:10 PM Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > On Mon, Mar 2, 2020 at 4:59 PM Alexei Starovoitov > <alexei.starovoitov@xxxxxxxxx> wrote: > > > > On Sun, Mar 01, 2020 at 12:10:42AM -0800, Andrii Nakryiko wrote: > > > Fix issue with not preserving btf_trace_##call structs when compiled under > > > Clang. Additionally, capture raw tracepoint arguments in raw_tp_##call > > > structs, directly usable from BPF programs. Convert runqslower to use those > > > for proof of concept and to simplify code further. > > > > Not only folks compile kernel with clang they use the latest BPF/BTF features > > with it. This is very nice to see! > > I've applied 1st patch to make clang compiled kernel emit proper BTF. > > > > As far as patch 2 I'm not sure about 'raw_tp_' prefix. tp_btf type of progs can > > use the same structs. So I think there could be a better name. Also bpftool can > > generate them as well while emitting vmlinux.h. I think that will avoid adding > > few kilobytes to vmlinux BTF that kernel isn't going to use atm. > > Fair enough, I'll follow up with bpftool changes to generate such > structs. I'm thinking to use tp_args_xxx name pattern, unless someone > has a better idea :) Bad news. BTF_KIND_FUNC_PROTOs don't capture argument names and having something like: struct tp_args_sched_switch { bool arg1; struct task_struct *arg2; struct task_struct *arg3; }; doesn't seem like a good solution...