X-Git-Url: https://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=ticketlock%2Fmem-progress.spin;h=b7395413dea110b4006e50313168579b9eebcbea;hp=dad43a45062a90e307b9b00c44d0eafe66bc49d3;hb=d149fa02aaafa08c2d02712afd3cbbbc5f8d5f67;hpb=03126291913d3c2df1d92137cf82767d9b490ade diff --git a/ticketlock/mem-progress.spin b/ticketlock/mem-progress.spin index dad43a4..b739541 100644 --- a/ticketlock/mem-progress.spin +++ b/ticketlock/mem-progress.spin @@ -45,15 +45,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) @@ -66,9 +59,9 @@ proctype proc_A() byte ticket; do - :: 1 -> -progress_A: + :: spin_lock(lock, ticket); +progress_A: refcount = refcount + 1; refcount = refcount - 1; spin_unlock(lock); @@ -80,8 +73,7 @@ proctype proc_B() byte ticket; do - :: 1 -> - spin_lock(lock, ticket); + :: spin_lock(lock, ticket); refcount = refcount + 1; refcount = refcount - 1; spin_unlock(lock);