Re: What would it take....

Da Zheng <[email protected]> Wed, 23 Dec 2009 16:46:34 +0800
Newsgroups gmane.os.hurd.l4,gmane.os.hurd.general,gmane.os.hurd.bugs
Message-ID <[email protected]>
Hi,

Samuel Thibault wrote:
>> (or volatile variable + memory barrier)
> 
> You do not need both. If you use a memory barrier, you don't need to
> tell the compiler "volatile", since the memory barrier already tells it
> that things may have changed. If you use volatile, the compiler won't
> optimise instructions so it would "work" too ; note however that it's
> not SMP safe (it may even not be premption-safe, depending on which
> instruction the compiler eventually uses).
We don't need both? If there is only volatile, instructions might be executed out of order and compilers might also reorder instructions.
As far as I see, spin_lock always uses "volatile" keyword to define spin_lock variables and there is "memory" in the list of clobbered registers of the inline assembly code. Doesn't "memory" mean memory barrier?
> 
> Anyway, just use the spinlocks that hurd's glibc provides in
> mach/spin-lock.h, they should just work.
> 
Zheng Da