What are the basic differences between a semaphore & spin-lock?
When would we use a semaphore over a spin-lock?
From Linux Device Drivers by Rubinni
Unlike semaphores, spinlocks may be used in code that cannot sleep, such as interrupt handlers