Monday, 12 July 2010

dtrace progress 20100712

clone() syscall on 2.6.32 kernel (64-bit) now works. I had to rework
the assembler/stub glue - at least I more or less understand why
I had to rework it. Unfortunately the code has had to be conditionalised
for ">= 2.6.32" kernels - I didnt see a quick win which unified the earlier
kernels with this, which makes it a little unobvious.

I havent tested on a 32-bit 2.6.32 kernel, so maybe someone will
tell me it works or not.

Theres some other syscalls which have special assembler prologue
(fork, iopl, sigaltstack, sigsuspend) and I havent proved
they need reworking. I am expecting them to, but at least

$ dtrace -n syscall:::

appears to be working again for me.

This really illustrates the complex environment dtrace needs to live in --
supporting not only 32 and 64 bit kernels, but all old and new kernels.

Its especially hard given we are running under the Sun CDDL license
and not the GPL. Given Oracle now owns dtrace, I wonder if we can
convert to something more palatable.

Now I am off to try out some more things to see if they work.

Post created by CRiSP v10.0.2a-b5877

No comments:

Post a Comment