CAS implementation may be broken
Jamie Lokier
jamie at shareable.org
Thu Nov 26 20:37:26 EST 2009
Toby Douglass wrote:
> Jamie Lokier wrote:
> >Note that pointer-counter is not really reliable.
>
> [snip case]
>
> >Of course even if the counter wraps, you still have to be 1/2^32
> >unlucky to see the same value. But that's enough to make it unreliable.
>
> I concur, but it's not a problem on 64-bit.
Agree, about 64-bit. (Until we have much faster CPUs :-)
It's occurred to me that it's possible to make pointer-counter safe.
Simply, when about to wrap, send a signal to every thread. The signal
handler should check if the thread it has interrupted is inside a
pointer-counter critical section, and if yes, force the interrupted
code to synchronise with all the other threads in another way, such as
using a mutex.
-- Jamie
More information about the linux-arm-kernel
mailing list