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

Reply via email to