On 12/19/2014 12:18 AM, Ola Liljedahl wrote:
On 18 December 2014 at 22:16, Maxim Uvarov <[email protected]> wrote:
On 12/18/2014 09:02 PM, Mike Holmes wrote:
Maxim is this scheduled for 0.7 ? I think the tests from Yan,Barry,Mario
require it

If it's ready I think we don't need to wait and include it. Working on
validation / merge...
The patch is ready (including reviewed).
As it is a pure addition, it cannot break anything.

As Linus said never never trust to "it cannot break anything" and always test patches before inclusion. Even in odp I found several times that one line patch may not compile for non x86.

Maxim.


Maxim.


On 10 December 2014 at 08:29, Bill Fischofer <[email protected]
<mailto:[email protected]>> wrote:



     On Wed, Dec 10, 2014 at 4:55 AM, Ola Liljedahl
     <[email protected] <mailto:[email protected]>> wrote:

         Signed-off-by: Ola Liljedahl <[email protected]
         <mailto:[email protected]>>


     Reviewed-by: Bill Fischofer <[email protected]
     <mailto:[email protected]>>

         ---
         (This document/code contribution attached is provided under
         the terms of
         agreement LES-LTM-21309)
         Implemented the missing odp_ticketlock_trylock().

          platform/linux-generic/odp_ticketlock.c | 30
         ++++++++++++++++++++++++++++++
          1 file changed, 30 insertions(+)

         diff --git a/platform/linux-generic/odp_ticketlock.c
         b/platform/linux-generic/odp_ticketlock.c
         index 682b01b..6525786 100644
         --- a/platform/linux-generic/odp_ticketlock.c
         +++ b/platform/linux-generic/odp_ticketlock.c
         @@ -34,6 +34,36 @@ void odp_ticketlock_lock(odp_ticketlock_t
         *ticketlock)
                         odp_spin();
          }

         +int odp_ticketlock_trylock(odp_ticketlock_t *tklock)
         +{
         +       /* We read 'next_ticket' and 'cur_ticket'
         non-atomically which should
         +        * not be a problem as they are not independent of
         each other.
         +        * 'cur_ticket' is always <= to 'next_ticket' and if
         we see an
         +        * older value of 'cur_ticket', this only means the
         lock will
         +        * look busy and trylock will fail. */
         +       uint32_t next = odp_atomic_load_u32(&tklock->next_ticket);
         +       uint32_t cur = odp_atomic_load_u32(&tklock->cur_ticket);
         +       /* First check that lock is available and possible to
         take without
         +        * spinning. */
         +       if (next == cur) {
         +               /* Then try to take the lock by incrementing
         'next_ticket'
         +                * but only if it still has the original value
         which is
         +                * equal to 'cur_ticket'.
         +                * We don't have to include 'cur_ticket' in
         the comparison
         +                * because it cannot be larger than
         'next_ticket' (only
         +                * smaller if the lock is busy).
         +                * If CAS fails, it means some other thread
         intercepted and
         +                * took a ticket which means the lock is not
         available
         +                * anymore */
         +               if
         (_odp_atomic_u32_cmp_xchg_strong_mm(&tklock->next_ticket,
         +       &next,
         +       next + 1,
         +       _ODP_MEMMODEL_ACQ,
         +       _ODP_MEMMODEL_RLX))
         +                       return 1;
         +       }
         +       return 0;
         +}

          void odp_ticketlock_unlock(odp_ticketlock_t *ticketlock)
          {
         --
         1.9.1


         _______________________________________________
         lng-odp mailing list
         [email protected] <mailto:[email protected]>
         http://lists.linaro.org/mailman/listinfo/lng-odp



     _______________________________________________
     lng-odp mailing list
     [email protected] <mailto:[email protected]>
     http://lists.linaro.org/mailman/listinfo/lng-odp




--
*Mike Holmes*
Linaro  Sr Technical Manager
LNG - ODP


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp


_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to