lkml.org 
[lkml]   [2012]   [Sep]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 3/3 v2] perf tool: give user better message if precise is not supported

    * Ingo Molnar <mingo@kernel.org> wrote:

    > * Peter Zijlstra <peterz@infradead.org> wrote:
    >
    > > On Fri, 2012-09-14 at 11:00 -0700, Arnaldo Carvalho de Melo wrote:
    > > > > Understood and there have been suggestions on how to definitely state
    > > > > what the kernel side did not like. I like Peter's last suggestion --
    > > > > something along the lines of clearing attr on a failure except the
    > > > > offending setting.
    > > >
    > > > I think ws need to use a new bit
    > >
    > > Quite so, for all the reasons you list. But you like the
    > > general idea? I wasn't sure I did, but it was the only thing I
    > > could come up with that would sort of do what we need it to.
    > >
    > > The fact that you destroy the user input is awkward, I don't
    > > think there's another syscall that behaves in this fashion.
    >
    > Destroying/clearing stuff looks really hacky.
    >
    > Why not use a single error status field, set via a long list
    > of enum error constants, a 'perf errnos'?
    >
    > The only real problem with the kernel's syscall error code is
    > that it's not wide enough for historic reasons, so we cannot
    > just create our own errnos. But we can create our errors in
    > the attr just fine and make them finegrained enough so that
    > tooling can figure out what happened exactly when it gets a
    > syscall error.
    >
    > Yes, that's old-fashioned technology, but it works. With time
    > we could put some structure into the list of error IDs, to
    > make it easily extensible yet grouped in some fashion, etc.

    And we could start this small: just covering the problem at hand
    or so, with proper tooling side support - and then extend it as
    needed. I.e. have something in place that we could ask people
    adding new kernel side error paths to use - and with time old
    code could be enriched with better error codes as well.

    perf could in fact internally standardize on a 32-bit wide error
    code, and translate it to -EINVAL at the syscall return level.
    That way we could keep all the simple error paths as they are
    today, with a very little syscall level logic (triggered in
    error cases only, so no overhead in the regular case).

    I.e.:

    return -EPERF_CPU_PRECISE_EV_NOTSUPP;

    would result in that error code being available to new, improved
    tooling that knows about the new attr field. Old tooling would
    still work as well, it would only see the -EINVAL of the
    syscall.

    Or something like this - simple and using existing patterns and
    practices. Anything else will likely fail due to non-use.

    Thanks,

    Ingo


    \
     
     \ /
      Last update: 2012-09-14 23:01    [W:4.269 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site