duplicate body remover
Li Guanglei
guanglei@cn.ibm.com
Fri Oct 20 00:53:00 GMT 2006
David Smith wrote:
>
> This actually already exists, it just happens at a later stage. If you
> look at the generated C code, you'll see something like this:
>
> =================
> static void probe_1480 (struct context * __restrict__ c) {
> ... normal systemtap initialization plus code to do 'log("here")' ...
> }
>
> ...
>
> static void probe_1481 (struct context * __restrict__ c) {
> probe_1480 (c);
> }
> =================
>
I noticed this. But what I mean is to step further to optimize
enter_probe_*. e.g:
stap -e 'probe
kernel.function("sys_*"),kernel.function("compat_sys_*") { log("here")
}' -p3 > a.c
stap -e 'probe syscall.* { log("here") }' -p3 > b.c
on my x86_64, the size of a.c and b.c is:
[root@ltc-x326m-1 ~]# ll a.c b.c
-rw-r--r-- 1 root root 49503 Oct 20 08:39 a.c
-rw-r--r-- 1 root root 684419 Oct 20 08:39 b.c
a.c has 2 appearances of register_kprobe/enter_probe_* and b.c has 296
of that. this is a big difference. Although it's not common to have
the same body for different probe points, it will cause the generated
c file really large in case someone use it.
- Guanglei
More information about the Systemtap
mailing list