Interrupts and spinlocks The full locking API is: void spin_lock(spinlock_t *lock); The normal locking function void spin_lock_irqsave(spinlock_t *lock, unsigned long flags); Disables interrupts, saves previous state Note flags is passed "by value" void spin_lock_irq(spinlock_t *lock); Disables interrupts without saving state Use when you know interrupts are enabled void spin_lock_bh(spinlock_t *lock); Only disables software interrupts