Обсуждение: Spinlocks may be broken.

Поиск
Список
Период
Сортировка

Spinlocks may be broken.

От
Alfred Perlstein
Дата:
I'm debugging some code here where I get problems related to
spinlocks, anyhow, while running through the files I noticed
that the UNLOCK code seems sort of broken.

What I mean is that on machines that have loosely ordered
memory models you can have problems because of data that's
supposed to be protected by the lock not getting flushed
out to main memory until possibly after the unlock happens.

I'm pretty sure you guys need memory barrier ops.

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."


Re: Spinlocks may be broken.

От
Tom Lane
Дата:
Alfred Perlstein <bright@wintelcom.net> writes:
> I'm pretty sure you guys need memory barrier ops.

On a machine that requires such a thing, the assembly code for UNLOCK
should include it.  Want to provide a patch?
        regards, tom lane


Re: Spinlocks may be broken.

От
Alfred Perlstein
Дата:
* Tom Lane <tgl@sss.pgh.pa.us> [001205 07:24] wrote:
> Alfred Perlstein <bright@wintelcom.net> writes:
> > I'm pretty sure you guys need memory barrier ops.
> 
> On a machine that requires such a thing, the assembly code for UNLOCK
> should include it.  Want to provide a patch?

My assembler is extremely rusty, you can probably find such code
in the NetBSD or Linux kernel for all the archs you want to do.
I wouldn't feel confident providing a patch, all I have is x86
hardware.

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."