X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=ticketlock%2Fmem.spin;h=59acfcf054dbb5ac1ae7ad556a315c9b31da88ce;hb=d149fa02aaafa08c2d02712afd3cbbbc5f8d5f67;hp=445ee9a6d4193da200ebbf810d2aeb91088b871a;hpb=03126291913d3c2df1d92137cf82767d9b490ade;p=urcu.git diff --git a/ticketlock/mem.spin b/ticketlock/mem.spin index 445ee9a..59acfcf 100644 --- a/ticketlock/mem.spin +++ b/ticketlock/mem.spin @@ -44,15 +44,8 @@ inline spin_lock(lock, ticket) lock = lock + HIGH_HALF_INC; /* overflow expected */ } - do - :: 1 -> - if - :: (LOW_HALF(lock) == ticket) -> - break; - :: else -> - skip; - fi; - od; + /* busy-wait */ + LOW_HALF(lock) == ticket -> 1; } inline spin_unlock(lock) @@ -65,8 +58,7 @@ proctype proc_X() byte ticket; do - :: 1-> - spin_lock(lock, ticket); + :: spin_lock(lock, ticket); refcount = refcount + 1; refcount = refcount - 1; spin_unlock(lock);