Re: [PATCH v2] atomic: Fix bugs in 'fetch_or()' and rename it to 'xchg_or()'

From: Peter Zijlstra
Date: Tue Mar 15 2016 - 09:26:36 EST


On Tue, Mar 15, 2016 at 01:21:45PM +0100, Ingo Molnar wrote:
> - Renaming fetch_or() to xchg_or(), recognizing that the semantics
> are xchg()-alike.

Let me add another argument for why I don't like the "exchange/swap
(and) add" naming.

Exchange (and swap) replace one value for another, like:

old = xchg(ptr, val);

Whatever was there, gets replaced by the independent value in @val.
Straight up replacement.

However with something like xchg_or, you don't do a direct replacement
with an unrelated value. Instead you modify the pre-existing value. So
there really isn't an exchange at all.

So "fetch (and) or" really describes the operation better. You load
(fetch) the value and then modify it, in an indivisible (aka atomic)
fashion.