lkml.org 
[lkml]   [2008]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/2] tracing/function-return-tracer: Make the function return tracer lockless

    On Thu, 13 Nov 2008, Andi Kleen wrote:

    > > > local register i
    > > > i = index;
    > > > write to index'ed array using i
    > > > <--------- interrupt here would overwrite data
    > > > ...
    > > > index = i + 1;
    > >
    > >
    > > Yes in the common case that would be a danger. But here, if an
    > > interrupt is raised, it will increment
    > > the counter and then decrement it at return time without dropping the
    > > cpu. So after the interrupt, the
    > > value will remain the same...
    >
    > The buffer contents will not be necessarily
    > the same. See the scenario above. The interrupt would use the
    > same i as the current function and would overwrite the
    > partially written entry.


    So the answer to this is:

    i = index++;
    barrier();
    write to index i (not index);

    -- Steve




    \
     
     \ /
      Last update: 2008-11-13 18:23    [W:0.023 / U:2.392 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site