Merged,

please check.

Maxim.

On 01/26/2016 15:41, Savolainen, Petri (Nokia - FI/Espoo) wrote:

Thanks. Maxim could you first try to merge and resolve conflicts. Those should be quite simple to resolve: additional atomic validation tests into validation/atomic/atomic.c instead of old validation/synchronizers/synchronizers.c.

-Petri

*From:*EXT Ola Liljedahl [mailto:ola.liljed...@linaro.org]
*Sent:* Tuesday, January 26, 2016 2:16 PM
*To:* Savolainen, Petri (Nokia - FI/Espoo)
*Cc:* LNG ODP Mailman List
*Subject:* Re: [lng-odp] [API-NEXT PATCH v3 00/13] atomi api completion

On 20 January 2016 at 10:19, Petri Savolainen <petri.savolai...@nokia.com <mailto:petri.savolai...@nokia.com>> wrote:

    Completed additions to atomic API. Added exchange operation in
    relaxed memory
    model. Added CAS operations in rel and acq_rel memory order. Added
    64 bit
    versions of all non-relaxed operations defined so far. Added all
    missing
    validation tests. Replaced internal atomics usage in lock, etc code
    (all except spinlock and timer) with API calls.

    This set of atomic calls seem to be sufficient to current
    linux-generic use
    cases. Timer and spinlock use atomic flag and 128 bit types, but
    does not
    require additional operation types (e.g. load_acq, store_rel, cas,
    cas_rel, etc
    are supported by the API).

    Additional operations can be added later if needed. Only commonly
    needed
    combinations of non-relaxed operations will be supported (added
    based on use
    case as any other ODP API). This set should already enable major
    part of
    lock-free algorithms.

They enable a lot of *lock-less* implementations but not all lock-less designs are properly "lock-free". Lock-free implies that no thread can block other other threads from doing progress. E.g. the DPDK ring buffer we copied is lock-less (based on CAS) but not lock-free, a thread which has entered the critical section (between CAS and the subsequent releasing store) must exit it before other threads can exit the critical section. The lock-less design enables some parallelism in operating on the data structure.


    v3:
      * Corrected race condition in xchg validation test

    v2:
      * rebased on latest api-next

Failed to actually build and run validation tests since some patches require some manual effort to merge. We agreed Petri & Maxim would do that.

Whole patch set

Reviewed-by: Ola Liljedahl <ola.liljed...@linaro.org <mailto:ola.liljed...@linaro.org>>


    Petri Savolainen (13):
      api: atomic: rename release ordering
      api: atomic: added 32bit cas_rel and cas_acq_rel
      linux-generic: atomic: 32bit cas_rel and cas_acq_rel
      api: atomic: add non-relaxed 64bit operations
      linux-generic: atomic: non-relaxed 64bit operations
      api: atomic: added relaxed exchange operation
      linux-generic: atomic: implemented exchange
      validation: atomic: added max and min tests
      validation: atomic: added cas test
      validation: atomic: added xchg test
      validation: atomic: added non-relaxed test
      linux-generic: locks: replace internal atomics
      linux-generic: barrier: use API memory barrier

     include/odp/api/atomic.h  | 220 +++++++++++--
     platform/linux-generic/include/odp/atomic.h | 142 ++++++++-
     .../linux-generic/include/odp_atomic_internal.h |   6 -
     platform/linux-generic/include/odp_pool_internal.h |   1 -
     platform/linux-generic/odp_barrier.c  |   8 +-
     platform/linux-generic/odp_pool.c |   1 -
     platform/linux-generic/odp_rwlock.c |  23 +-
     platform/linux-generic/odp_ticketlock.c |  21 +-
     test/validation/synchronizers/synchronizers.c | 347
    ++++++++++++++++++++-
     test/validation/synchronizers/synchronizers.h |   4 +
     10 files changed, 689 insertions(+), 84 deletions(-)

    --
    2.6.3

    _______________________________________________
    lng-odp mailing list
    lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
    https://lists.linaro.org/mailman/listinfo/lng-odp


_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to