• Jens Gustedt's avatar
    re-implement the fifo with double word cmpxchg · d4fc1b33
    Jens Gustedt authored
    The "classic" fifo implementation has the disadvantage that it is subject
    to the ABA race condition. For our usage this has probably never
    triggered, since this would need a very quick recycling of list elements,
    but nevertheless it is probably better to fix that problem once and for
    all.
    
    This new implementation uses a unique transaction ID that is stored with
    the list element pointer in a single atomic operation. On most modern
    architectures this double word atomic operation should result in a single
    cmpxchg if the code is compiled with the good compiler options. For gcc,
    usually -march=native should suffice.
    d4fc1b33
p99_lifo.h 11.3 KB