[lkml]   [2010]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [RFC] [PATCH 4/7] Uprobes Implementation
    On Fri, 2010-01-15 at 08:38 -0500, Frank Ch. Eigler wrote:
    > Hi -
    > On Fri, Jan 15, 2010 at 02:25:30PM +0100, Peter Zijlstra wrote:
    > > [...]
    > > > utrace is not a form of punishment inflicted upon the undeserving. It
    > > > is a service layer that uprobes et alii are built upon. You as a
    > > > potential uprobes client need not also talk directly to it, if you
    > > > wish to reimplement task-finder-like services some other way.
    > >
    > > [...]
    > > But yes, I think that for most purposes utrace is a punishment, its way
    > > too heavy, I mean, trap, generate a signal, catch the signal, that's
    > > like an insane amount of code to jump through in order to get that trap.
    > At the bottom, there will be an int3 in the userspace text page.
    > There will be a trap taken, no matter what. Code must figure out
    > whether this trap came from an in-kernel client such as uprobes, or
    > whether it is to be passed through to a userspace debugger via ptrace
    > (or the gdbstub). This part is unavoidable if you wish to be
    > compatible.

    Sure, a lookup against existing probe sites on trap is unavoidable, if
    you find a match, you call a probe specific handler and deal with it
    there, if you don't you'll eventually generate a SIGTRAP and fall back
    to userspace.

    Thing is, utrace doesn't do that (nor should it), its something the
    uprobe interface should implement just like kprobes does.

    > I'm not sure, but it sounds like the part you're complaining about is
    > how utrace ultimately reports the trap to uprobes: i.e.,
    > utrace_get_signal()? Is that the "insane amount of code"?

    Well when tracing/profiling every instruction is too much. Having to
    needlessly raise a signal only to catch it again a short bit later
    sounds like obvious waste to me.

    > > Furthermore it requires stopping and resuming tasks and nonsense like
    > > that, that's unwanted in many cases, just run stuff from the trap site
    > > and you're done.
    > I don't know what you mean exactly. A trap already stopped task.
    > utrace merely allows various clients to inspect/manipulate the state
    > of the task at that moment. It does not add any context switches or
    > spurious stop/resumue operations.

    Srikar seemed to suggest it needed stop/resume.

     \ /
      Last update: 2010-01-15 14:51    [W:0.031 / U:18.056 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site