On Wed, Feb 21, 2018 at 02:27:04PM -0500, Alan Stern wrote: > On Wed, 21 Feb 2018, Paul E. McKenney wrote: > > > > > +ISA2+pooncelock+pooncelock+pombonce.litmus > > > > + Tests whether the ordering provided by a lock-protected S litmus > > > > > > Call it an ISA2 litmus test, not an S litmus test! > > > > Given the structure of the test, the relationship to S is important > > because it helps motivate why anyone might care. But yes, having ISA2 > > only in the filename is a bit obtuse. How about the following? > > > > ISA2+pooncelock+pooncelock+pombonce.litmus > > Tests whether the ordering provided by a lock-protected S > > litmus test is visible to an external process whose accesses are > > separated by smp_mb(). This addition of an external process to > > S is otherwise known as ISA2. > > Okay, that's somewhat better. > > However, I still don't understand why you think of this as a form of S. > In S, the first variable written by P0 is the same as the variable > written by P1. In this test, no variable other than the spinlock gets > written twice. To me that seems like a pretty fundamental difference.
There is a chain of processes connected by variables, similar to a snap-together toy. If you "disconnect" S at the end and snap in a process having a pair of reads separated by a full memory barrier, you get ISA2. And yes, this does rename one of S's variables, but that is OK because in this view, each variable is defined by the connection between a given pair of pair of processes. Unconventional perhaps, but then again remember who you are emailing with. ;-) Another (perhaps more conventional) way to think of this is in terms of Andrea's python script that identified equivalent litmus tests. For that script, both the variable names and process numbers are irrelevant. Thanx, Paul