Kernel Synchronization Methods

1 Atomics Operations

2 Spin Locks

read_lock(&mr_rwlock);
write_lock(&mr_rwlock);

3 Semaphores

static DECLARE_MUTEX(mr_sem);
...
if(down_interruptible(&mr_sem))
   /* signal received, semaphore not acquired */
/* critical region... */
up(&mr_sem);

4 Complteion Variables

5 BKL: The Big Kernel Lock

6 Seq Locks

do{
   seq = read_seqbegin(&mr_seq_lock);
   /* read data here... */
}while (read_seqretry(&mr_seq_lock, seq));
  • Discuss: what is /read_seqretry()/ doing?

7 Preemption Disabling

8 Barriers