On Wed, Nov 09, 2005 at 09:52:40AM -0800, Zachary Amsden wrote:
Ingo Molnar wrote:
* Zachary Amsden <zach@xxxxxxxxxx> wrote:Well, if there is a justification for it, that means we really should handle all the nasty EIP conversion cases due to segmentation and v8086 mode in the kprobes code. I was hoping that might not be the case.
kprobes are not just for 'debuggers', they are also used for tracing and other dynamic instrumentation in projects like systemtap. Ptrace is way too slow and limited for things like that.I believe user space kprobes are being worked on by some IBM India folks yes.I'm convinced this is pointless. What does it buy you over a ptrace based debugger? Why would you want extra code running in the kernel that can be done perfectly well in userspace?
As Ingo mentioned above, Systemtap uses kprobes infrastructure to provide
dynamic kernel instrumentation. Using which user can add lots of probes easily, so we need to take care of this fast path.
Instead of calling convert_eip_to_linear() for all cases, you can
just check if it is in kernel mode and calculate the address directly
if (kernel mode)
addr = regs->eip - sizeof(kprobe_opcode_t);
else
addr = convert_eip_to_linear(..);
there by avoiding call to convert_eip_to_linear () for every kernel probes.
As Andi mentioned user space probes support is in progress and this address conversion will help in case of user space probes as well.