
                                 SPINNING LOCKS
                spinlock_lock, spinlock_trylock, spinlock_unlock
                                 +------------+
                                 | spinlock_t |
                                 +------------+
                                       |
                                       +------------------------------+
                                                                      |
                      INTERRUPTS-DISABLED SPINNING LOCKS              |
       irq_spinlock_lock, irq_spinlock_trylock, irq_spinlock_unlock   |
                               +----------------+                     |
                               | irq_spinlock_t |<--------------------+
                               +----------------+



                                   WAIT QUEUES
                         waitq_sleep_timeout, waitq_wakeup
                                   +---------+
                                   | waitq_t |
                                   +---------+
                                  /           \
               SEMAPHORES        /             \  CONDITION VARIABLES
 semaphore_down_timeout, semaphore_up    condvar_wait_timeout, condvar_signal
            +--------------+   /                 \   +-----------+
            | semaphore_t  |<-+                   +->| condvar_t |
            +--------------+                         +-----------+
                   |                                       ^
                   |                                       |
                   |                                +------+
                   V                               /
                MUTEXES                           / READERS/WRITERS LOCKS
    mutex_lock_timeout, mutex_unlock   rwlock_reader/writer_lock_timeout, rwlock_unlock
              +---------+                       /        +----------+
              | mutex_t |------------------------------->| rwlock_t |
              +---------+                     /          +----------+
                   |                         /
                   +------------------------+
