On 1/6/25 6:03 AM, Maciej W. Rozycki wrote:
With non-BWX Alpha implementations we have a problem of data races where
a 8-bit byte or 16-bit word quantity is to be written to memory in that
in those cases we use an unprotected RMW access of a 32-bit longword or
64-bit quadword width. If contents of the longword or quadword accessed
outside the byte or word to be written are changed midway through by a
concurrent write executing on the same CPU such as by a signal handler
or a parallel write executing on another CPU such as by another thread
or via a shared memory segment, then the concluding write of the RMW
access will clobber them. This is especially important for the safety
of RCU algorithms, but is otherwise an issue anyway.
But in the case of concurrent accesses, shouldn't these objects be
declared as atomic? Similarly for objects potentially accessed in a
signal hnadler shouldn't they be accessed via sig_atomic_t?
Point being I'm not 100% sure we really need to tackle this problem in a
fully generic manner for all 8/16 bit accesses
What am I missing here?
jeff