All of lore.kernel.org
 help / color / mirror / Atom feed
* 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
* 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

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-08 21:00 Question from Russells Spinlocks Imanpreet Singh Arora
2004-12-09 21:53 ` Brian Gerst
2004-12-09 22:03   ` William Lee Irwin III
  -- strict thread matches above, loose matches on Subject: below --
2004-12-09 21:15 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

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.