Explain the difference between a spinlock and a mutex, and when you would use each in an embedded Linux driver.