All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: Question from Russells Spinlocks
@ 2004-12-09 21:15 kernel-stuff
  2004-12-09 21:49 ` Robert Love
  2004-12-09 23:30 ` Anton Altaparmakov
  0 siblings, 2 replies; 9+ messages in thread
From: kernel-stuff @ 2004-12-09 21:15 UTC (permalink / raw)
  To: Imanpreet Singh Arora, Linux Kernel Mailing List

Spinlocks are used in situations where multiple threads contend for a lock and they can possibly run on more than one CPU. Example - Thread A is executing on CPU-A, Thread B in executing on CPU-B. They contend for a lock L1.  A acquires the lock first. B tries (on CPU-B) to acquire the lock L1 and finds it is not free - so it just spins (executes a no-op kind of loop ) until Thread A relinquishes the lock L1. 
Spinlocks are used in cases where the operation performed under a lock is short one - takes very less time. In these type of cases, spinning is less costlier than sleeping which involves scheduler overhead.
So if we take out CPU-B from the above equation - there is no chance for Thread B to execute to contend for lock L1 without thread A going to sleep. That's why spinlocks are useless on 1 CPU machine.

 The comment about  atomic_t - It is due to the fact that some ( IA-32 for e.g.) architectures guarantees atomicity of integer operations for only 24 bits. So you could possibly manipulate only 24 out of the 32 bits atomically - that's the hardware guarantee. The comments reflect this fact. (Pointers are 32bits on IA32 so it applies to pointer as well.)

Correct me if I am wrong :) !

Parag


> 
> Hello there,
> 
>     I was reading Russell's guide on spinlocks, and I have some 
> questions regarding it.
> 
> 
>     Question-->    Russell says that in case of non-SMP machines 
> spinlocks don't exist _at_ALL_. Well they should do something don't they 
> like disable interrupts and premptations. I checked linux/spinlock well 
> they DO NOT do anything atleast not when DEBUG_SPINLOCKS == 0. My 
> understanding is that since they aren't used anywhere outside kernel and 
> drivers(?), they can't be prempted. At least that is what I have read.
> 
> 
> What does the comment about gcc while defining atomic_t signify?
>              --> What about the comment about the limit of 24 bits on 
> atomic_t?    
>              a)    Atomic operations on integers are guranteed only if 
> there value can be stored in 24 bits.
>              b)    Atomic operations are guranteed only if the pointer 
> has 8 MSbits set zero.
> 
> 
> -- 
> Imanpreet Singh Arora
> 
> Even if you are on the right track you are going to get runover if you just sit 
> there.
> 	-- Will Rogers
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 9+ messages in thread
* Question from Russells Spinlocks
@ 2004-12-08 21:00 Imanpreet Singh Arora
  2004-12-09 21:53 ` Brian Gerst
  0 siblings, 1 reply; 9+ messages in thread
From: Imanpreet Singh Arora @ 2004-12-08 21:00 UTC (permalink / raw)
  To: Linux Kernel Mailing List


Hello there,

    I was reading Russell's guide on spinlocks, and I have some 
questions regarding it.


    Question-->    Russell says that in case of non-SMP machines 
spinlocks don't exist _at_ALL_. Well they should do something don't they 
like disable interrupts and premptations. I checked linux/spinlock well 
they DO NOT do anything atleast not when DEBUG_SPINLOCKS == 0. My 
understanding is that since they aren't used anywhere outside kernel and 
drivers(?), they can't be prempted. At least that is what I have read.


What does the comment about gcc while defining atomic_t signify?
             --> What about the comment about the limit of 24 bits on 
atomic_t?    
             a)    Atomic operations on integers are guranteed only if 
there value can be stored in 24 bits.
             b)    Atomic operations are guranteed only if the pointer 
has 8 MSbits set zero.


-- 
Imanpreet Singh Arora

Even if you are on the right track you are going to get runover if you just sit there.
	-- Will Rogers



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2004-12-10  2:04 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-09 21:15 Question from Russells Spinlocks kernel-stuff
2004-12-09 21:49 ` Robert Love
2004-12-10  2:04   ` Parag Warudkar
2004-12-09 23:30 ` Anton Altaparmakov
2004-12-09 23:58   ` Jeff V. Merkey
2004-12-10  2:02   ` Parag Warudkar
  -- strict thread matches above, loose matches on Subject: below --
2004-12-08 21:00 Imanpreet Singh Arora
2004-12-09 21:53 ` Brian Gerst
2004-12-09 22:03   ` William Lee Irwin III

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.