Re: [PATCH v2] tools/memory-model: Make compat with herd7 7.47 ("-" -> "_")

From: Paul E. McKenney
Date: Mon Feb 12 2018 - 20:38:08 EST


On Sun, Feb 11, 2018 at 12:51:48PM +0100, Ingo Molnar wrote:
>
> * Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
>
> > On Sat, Feb 10, 2018 at 08:46:25AM +0900, Akira Yokosawa wrote:
> > > >From 7c1f497a9a51e8db1a94c8a7ef0b74b235aaab88 Mon Sep 17 00:00:00 2001
> > > From: Akira Yokosawa <akiyks@xxxxxxxxx>
> > > Date: Fri, 9 Feb 2018 04:51:05 -0800
> > > Subject: [PATCH v2] tools/memory-model: Make compat with herd7 7.47 ("-" -> "_")
> > >
> > > As of herd7 7.47, these '-'s are not permitted and end up in
> > > errors such as:
> > >
> > > File "./linux-kernel.def", line 44, characters 29-30:
> > > unexpected '-' (in macros)
> > >
> > > Partial revert of commit 2d5fba7782d6 ("linux-kernel*: Make RCU
> > > identifiers match ASPLOS paper") in the repository at
> > > https://github.com/aparri/memory-model can restore the compatibility
> > > with herd7 7.47.
> > >
> > > Reported-by: Patrick Bellasi <patrick.bellasi@xxxxxxx>
> > > Suggested-by: Andrea Parri <parri.andrea@xxxxxxxxx>
> > > Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx>
> > > ---
> > > Paul,
> > >
> > > FWIW, this is a squashed version relative to patch 07/10 in the RFC series.
> >
> > Thank you, Akira!
> >
> > I am going to hold off on this for a bit to see if we can instead get
> > a new release of herd7, but if we can't. this might well be a very good
> > way to go.
>
> I'm wondering:
>
> > > // RCU
> > > -rcu_read_lock() { __fence{rcu-lock}; }
> > > -rcu_read_unlock() { __fence{rcu-unlock};}
> > > -synchronize_rcu() { __fence{sync-rcu}; }
> > > -synchronize_rcu_expedited() { __fence{sync-rcu}; }
> > > +rcu_read_lock() { __fence{rcu_lock}; }
> > > +rcu_read_unlock() { __fence{rcu_unlock};}
> > > +synchronize_rcu() { __fence{sync_rcu}; }
> > > +synchronize_rcu_expedited() { __fence{sync_rcu}; }
>
> What's the point of using '-' instead of '_'? In a program language syntax
> environment it's easy to confuse it with a '-' operator, and it also looks
> slightly sloppy and inconsistent if we sometimes have '_' and sometimes '-'.
>
> If it used on purpose, to separate namespaces from kernel internal API names,
> then that's rather obscure IMHO and then I'd rather suggest proper prefixes
> instead.

These lines are connecting Linux-kernel names to cat-language names.
The cat language can be thought of as a set-based constraint language,
which doesn't have subtraction (the closest analog being set difference,
which is denoted by "\"). Cat-language code has used "-" as a word
separator in names, and the model had previously had an odd mixture of
"-" and "_". Hence, the switch to the cat-language convention.

Of course, if underscore is strongly preferred, underscore does work,
and it should be possible to move in that direction.

Thanx, Paul