lkml.org 
[lkml]   [2015]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] arm64: bpf: add BPF XADD instruction
    On Wed, Nov 11, 2015 at 07:44:27PM +0100, Peter Zijlstra wrote:
    > On Wed, Nov 11, 2015 at 07:31:28PM +0100, Peter Zijlstra wrote:
    > > > Add new one that does 'fetch_and_add' ? What is the real use case it
    > > > will be used for?
    > >
    > > Look at all the atomic_{add,dec}_return*() users in the kernel. A typical
    > > example would be a reader-writer lock implementations. See
    > > include/asm-generic/rwsem.h for examples.
    >
    > Maybe a better example would be refcounting, where you free on 0.
    >
    > if (!fetch_add(&obj->ref, -1))
    > free(obj);

    Urgh, too used to the atomic_add_return(), which returns post op. That
    wants to be:

    if (fetch_add(&obj->ref, -1) == 1)
    free(obj);

    Note that I would very much recommend _against_ encoding the post-op
    thing in instructions. It works for reversible operations (like add) but
    is pointless for irreversible operations (like or).

    That is, given or_return(), you cannot reconstruct the state
    prior to the operation, so or_return() provides less information than
    fetch_or().




    \
     
     \ /
      Last update: 2015-11-11 20:01    [W:4.265 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site