Explain the difference between a spinlock and a mutex. When would you use one over the other in a Linux kernel module?