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

From: Ingo Molnar
Date: Sun Feb 11 2018 - 06:52:00 EST



* 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.

Thanks,

Ingo