Messages in this thread | | | Subject | Re: [patch] spinlocks: remove 'volatile' | From | Arjan van de Ven <> | Date | Thu, 06 Jul 2006 21:38:11 +0200 |
| |
On Thu, 2006-07-06 at 13:33 -0600, Chris Friesen wrote: > Linus Torvalds wrote: > > > On Thu, 6 Jul 2006, Mark Lord wrote: > > >> A volatile declaration may be used to describe an object corresponding > >> to a memory-mapped input/output port or an object accessed by an > >> aysnchronously interrupting function. Actions on objects so declared > >> shall not be "optimized out" by an implementation or reordered except > >> as permitted by the rules for evaluating expressions. > > > > > > Note that the "reordered" is totally pointless. > > > > The _hardware_ will re-order accesses. Which is the whole point. > > "volatile" is basically never sufficient in itself. > > The "reordered" thing really only matters on SMP machines, no? In which > case (for userspace) the locking mechanisms (mutexes, etc.) should do > The Right Thing to ensure visibility between cpus. > > The C standard requires the use of volatile for signal handlers and setjmp. > > For userspace at least the whole discussion of "barriers" is sort of > moot--there are no memory barriers defined in the C language, which > makes it kind of hard to write portable code that uses them.
You're falling into RBJ's trap. I did not say *MEMORY BARRIER*. While for some uses of "volatile" that is the right substitute, for others it is *optimization barrier* which matters.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |