Re: [PATCH] tools/memory-model: document the "one-time init" pattern

From: Matthew Wilcox
Date: Mon Jul 20 2020 - 12:47:38 EST


On Mon, Jul 20, 2020 at 10:52:11AM -0400, Alan Stern wrote:
> On Mon, Jul 20, 2020 at 11:33:20AM +1000, Dave Chinner wrote:
> > On Sat, Jul 18, 2020 at 10:08:11AM -0400, Alan Stern wrote:
> > > > This is one of the reasons that the LKMM documetnation is so damn
> > > > difficult to read and understand: just understanding the vocabulary
> > > > it uses requires a huge learning curve, and it's not defined
> > > > anywhere. Understanding the syntax of examples requires a huge
> > > > learning curve, because it's not defined anywhere.
> > >
> > > Have you seen tools/memory-model/Documentation/explanation.txt?
> >
> > <raises eyebrow>
> >
> > Well, yes. Several times. I look at it almost daily, but that
> > doesn't mean it's approachable, easy to read or even -that I
> > understand what large parts of it say-. IOWs, that's one of the
> > problematic documents that I've been saying have a huge learning
> > curve.
>
> Can you be more specific? For example, exactly where does it start to
> become unapproachable or difficult to read?
>
> Don't forget that this document was meant to help mitigate the LKMM's
> learning curve. If it isn't successful, I want to improve it.

I can't speak for Dave, but the introduction to that documentation makes
it clear to me that it's not the document I want to read.

: This document describes the ideas underlying the LKMM. It is meant
: for people who want to understand how the model was designed. It does
: not go into the details of the code in the .bell and .cat files;
: rather, it explains in English what the code expresses symbolically.

I don't want to know how the model was designed. I want to write a
device driver, or filesystem, or whatever.

Honestly, even the term "release semantics" trips me up _every_ time.
It's a barrier to understanding because I have to translate it into "Oh,
he means it's like an unlock". Why can't you just say "unlock semantics"?