Hi Li,
Currently I am working on a few generic tapsets, and there appears to be
some overlap with what you've done. For example, earlier this week I
checked in a process tapset. This should be able to give you the fork
and exec events you're using in LKET.
Thang and I are also working on IO, scheduler, networking, and VM
tapsets, but we don't have anything ready to check in yet. I will
definitely take a look at what you've provided though, and leverage that
which overlaps.
I think it would be great to have LKET as a tapset, but I would like to
see a more layered approach. What you've given is very specific to
tracing, but the events that you probe have a more general audience as
well. A broader approach would be to implement the events as general
tapsets, and then build LKET as a layer on top of the base tapsets.
The syscalls are a good example of this -- in LKET you've captured
syscalls using function wildcards. However, we have the syscall tapset
that has already gone through pains to define all of the actual system
calls available. If we run into syscall issues in the future, it would
be much nicer to need only fix the syscall tapset, and let LKET benefit
from that. So instead of probing 'kernel.function("sys_*")', you should
use 'syscall.*'. And if there are reasons why this doesn't work well
for you, let's address that rather than duplicating efforts.
Josh