Mike Haertel <[EMAIL PROTECTED]> wrote:
>Um. FYI on x86, even if the compiler generates the RMW
>form "addl $1, foo", it's not atomic. If you want it to
>be atomic you have to precede the opcode with a LOCK
>prefix 0xF0.
I'd noticed that point as well. The top of sys/i386/include/atomic.h
_does_ make is clear that they aren't SMP safe:
/*
* Various simple arithmetic on memory which is atomic in the presence
* of interrupts.
*
* Note: these versions are not SMP safe.
*/
That said, it should be fairly simple to change Matt's new in-line
assembler versions to insert LOCK prefixes when building an SMP
kernel. (Although I don't know that this is necessary yet, given
the `Big Giant Lock').
There remains the problem of locating all the operations in the kernel
that _should_ be atomic but aren't marked as such. Doug Rabson and
the rest of the Alpha porting crew will have found a lot of these, but
locating race conditions by waiting for them to occur is not the best
solution.
Peter
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message