This spinlock is used to provide mutual exclusion.
Create a spinlock that can be used to provide mutually exclusive read/write access to the globally accessible data structures that were defined above. Mutually exclusive access is required to ensure that the audio data structures are consistent at all times when possibly accessed by multiple threads of execution (for example, while simultaneously handling a user request and an interrupt event).
We need to use a spinlock whenever we do need to provide mutual exclusion while possibly executing in a hardware interrupt context. Spinlocks should be held for the minimum time that is necessary because hardware interrupts are disabled while a spinlock is held.