On Mon, Jan 19, 2015 at 1:52 AM, Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx> wrote: > If we can write the script as > > int bpf_prog4(s64 write_size) > { > ... > } > > This will be much easier to play with. yes. that's the intent for user space to do. >> The example of this arbitrary pointer walking is tracex1_kern.c >> which does skb->dev->name == "lo" filtering. > > At least I would like to see this way on kprobes event too, since it should be > treated as a traceevent. it's done already... one can do the same skb->dev->name logic in kprobe attached program... so from bpf program point of view, tracepoints and kprobes feature-wise are exactly the same. Only input is different. >> - kprobe programs are architecture dependent and need user scripting >> language like ktap/stap/dtrace/perf that will dynamically generate >> them based on debug info in vmlinux > > If we can use kprobe event as a normal traceevent, user scripting can be > architecture independent too. Only perf-probe fills the gap. All other > userspace tools can collaborate with perf-probe to setup the events. > If so, we can avoid redundant works on debuginfo. That is my point. yes. perf already has infra to read debug info and it can be extended to understand C like script as: int kprobe:sys_write(int fd, char *buf, size_t count) { // do stuff with 'count' } perf can be made to parse this text, recognize that it wants to create kprobe on 'sys_write' function. Then based on debuginfo figure out where 'count' is (either register or stack) and generate corresponding bpf program either using llvm/gcc backends or directly. perf facility of extracting debug info can be made into library too and used by ktap/dtrace tools for their languages. User space can innovate in many directions. and, yes, once we have a scripting language whether it's C like with perf or else, this language hides architecture depend things from users. Such scripting language will also hide the kernel side differences between tracepoint and kprobe. Just look how ktap scripts look alike for kprobes and tracepoints. Whether ktap syntax becomes part of perf or perf invents its own language, it's going to be good for users regardless. The C examples here are just examples. Something users can play with already until more user friendly tools are being worked on. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html