question about __raw_spin_lock()

From: Roland Kuhn
Date: Wed Sep 06 2006 - 04:25:09 EST


Dear experts!

Trying to inform myself about the locking possibilities on i386, I read linux/include/asm-i386/spinlock.h. I'm no expert on inline assembly, so I'm asking myself what would happen on a very big system if more than 128 threads are waiting on the same raw_spinlock_t. Would the 129th locker erroneously succeed immediately?

As a side note: I was looking because I have to implement a simple lock between processes in shared memory, and unfortunately I cannot use the NPTL :-( SysV semaphores presumably are much too heavy to protect simple linked list operations (no scanning of the list under the lock, just inserting on one end and removing from the other). Does anybody have a better idea than spinning in user space---with a nanosleep now and then---or does this have problems I'm not aware of?

Thanks for your help,

Roland

--
TU Muenchen, Physik-Department E18, James-Franck-Str., 85748 Garching
Telefon 089/289-12575; Telefax 089/289-12570
--
CERN office: 892-1-D23 phone: +41 22 7676540 mobile: +41 76 487 4482
--
Any society that would give up a little liberty to gain a little
security will deserve neither and lose both. - Benjamin Franklin
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GS/CS/M/MU d-(++) s:+ a-> C+++ UL++++ P+++ L+++ E(+) W+ !N K- w--- M + !V Y+
PGP++ t+(++) 5 R+ tv-- b+ DI++ e+++>++++ h---- y+++
------END GEEK CODE BLOCK------


Attachment: PGP.sig
Description: This is a digitally signed message part