[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.2002251608290.1485-100000@iolanthe.rowland.org>
Date: Tue, 25 Feb 2020 16:42:03 -0500 (EST)
From: Alan Stern <stern@...land.harvard.edu>
To: Luc Maranget <luc.maranget@...ia.fr>
cc: Boqun Feng <boqun.feng@...il.com>,
Andrea Parri <parri.andrea@...il.com>,
Jade Alglave <j.alglave@....ac.uk>,
"Paul E. McKenney" <paulmck@...nel.org>,
Kernel development list <linux-kernel@...r.kernel.org>
Subject: More on reader-writer locks
On Tue, 25 Feb 2020, Luc Maranget wrote:
> Hi,
>
> As far as I can remember I have implemented atomic_add_unless in herd7.
Luc, have you considered whether we can use atomic_add_unless and
cmpxchg to implement reader-writer locks in the LKMM? I don't think we
can handle them the same way we handle ordinary locks now.
Let's say that a lock variable holds 0 if it is unlocked, -1 if it is
write-locked, and a positive value if it is read-locked (the value is
the number of read locks currently in effect). Then operations like
write_lock, write_trylock, and so on could all be modeled using
variants of atomic_add_unless, atomic_dec, and cmpxchg.
But will that work if the reads-from relation is computed by the cat
code in lock.cat? I suspect it won't.
How would you approach this problem?
Alan
Powered by blists - more mailing lists