X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=formal-model%2Fooomem-two-writes%2Fmem.spin;h=304c3f80f534aeba276c7ef7dc1efa3706a04fc9;hb=41e967af0a4bd23a88b87be39a6c7f7d68a9e2ca;hp=9202043692079304e5c88460df81cad6a9c15309;hpb=dfa8abef9f88fd28e232b0eab9a105fc50e71959;p=urcu.git diff --git a/formal-model/ooomem-two-writes/mem.spin b/formal-model/ooomem-two-writes/mem.spin index 9202043..304c3f8 100644 --- a/formal-model/ooomem-two-writes/mem.spin +++ b/formal-model/ooomem-two-writes/mem.spin @@ -1,5 +1,21 @@ /* - * mem.spin: Promela code to validate memory barriers with OOO memory. + * mem.spin: Promela code to validate memory barriers with out-of-order memory + * and out-of-order instruction scheduling. + * + * Algorithm verified : + * + * alpha = 0; + * beta = 0; + * x = 1; + * y = 1; + * + * Process A Process B + * alpha = 1; beta = 1; + * mb(); mb(); + * x = beta; y = alpha; + * + * if x = 0, then y != 0 + * if y = 0, then x != 0 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -142,9 +158,8 @@ inline smp_mb() DECLARE_CACHED_VAR(byte, alpha, 0); DECLARE_CACHED_VAR(byte, beta, 0); -/* value 2 is uninitialized */ -byte read_one = 2; -byte read_two = 2; +byte read_one = 1; +byte read_two = 1; /* * Bit encoding, proc_one_produced :