[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 8/8] evtchn: add FIFO-based event channel hypercalls and port ops

On 20/03/2013 15:54, "David Vrabel" <david.vrabel@xxxxxxxxxx> wrote:

>>>> You might have to use an atomic_t or similar if the consumer might be
>>>> confused by partial updates.
>>> I have assumed that reads and writes to 32-bit words are atomic on all
>>> interesting architectures.
>> True, but unless you explicitly tell it to, the compiler isn't required
>> to update a 32-bit variable using 32-bit operations, or to avoid
>> weird-looking intermediate values.  It seems unlikely that it would do
>> anything other than straightforwardly write the new value, but we've seen
>> compilers do some unlikely things. :)
> Ok.  Looks like I need to use write_atomic() to update the head in Xen.

Yes, I introduced {read,write}_atomic() precisely to deal with this
possibility. No doubt we are missing some places it ought to be used, but at
least we fix them when we spot them and new code should make use of them.

It also provides some form of documentation about memory locations involved
in lock-free communication/synchronisation.

 -- Keir

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.