Re: [PATCH] WorkStruct: Implement generic UP cmpxchg() where an arch doesn't support it

Linus Torvalds
2006-12-07T00:55:10Z

On Thu, 7 Dec 2006, Roman Zippel wrote:
> On Wed, 6 Dec 2006, Matthew Wilcox wrote:
>
> > To be honest, it'd be much easier if we only defined these operations on
> > atomic_t's. We have all the infrastructure in place for them, and
> > they're fairly well understood. If you need different sizes, I'm OK
> > with an atomic_pointer_t, or whatever.
>
> FWIW Seconded.

I disagree.

Any _real_ CPU will simply never care about _anything_ else than just the
size of the datum in question. There's absolutely no point to only allow
it on certain types, especially as we _know_ those certain types are
already going to be more than one, and we also know that they are going to
be different sizes. In other words, in reality, we have to handle a
sizeable subset of the whole generic situation, and the "on certain types
only" situation is only going to be awkward and irritating.

For example, would we have a different "cmpxchg_ptr()" function for the
atomic pointer thing? With any reasonable CPU just depending on the _size_
of the type, I don't see what the problem is with just doing the
bog-standard "cmpxchg_8/16/32/64" and having the bog-standard case-
statement in a header file to do it all automatically for you, and then we
don't need to worry about it.

Linus