From: Paul E. McKenney Date: Thu, 12 Feb 2009 18:25:05 +0000 (-0500) Subject: Fix formal model nesting X-Git-Tag: v0.1~290 X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=commitdiff_plain;h=f321bf383dd9b5940b31e4db6c9e18a5abaa0213 Fix formal model nesting Also, the original model I sent out has a minor bug that prevents it from fully modeling the nested-read-side case. The patch below fixes this. Signed-off-by: Paul E. McKenney Signed-off-by: Mathieu Desnoyers --- diff --git a/formal-model/urcu.spin b/formal-model/urcu.spin index e5bfff3..611464b 100644 --- a/formal-model/urcu.spin +++ b/formal-model/urcu.spin @@ -124,9 +124,13 @@ proctype urcu_reader() break; :: tmp < 4 && reader_progress[tmp] != 0 -> tmp = tmp + 1; - :: tmp >= 4 -> + :: tmp >= 4 && + reader_progress[0] == reader_progress[3] -> done = 1; break; + :: tmp >= 4 && + reader_progress[0] != reader_progress[3] -> + break; od; do :: tmp < 4 && reader_progress[tmp] == 0 ->