A mutual exclusion lock is a special case of a semaphore when the initial value is 1. The type of a lock is mutex_t. A lock must be initialized with mutex_init() before its use. Then, a lock can be acquired with mutex_lock() and then released with mutex_unlock(). All mutex lock related functions start with mutex_. The specification of these functions are shown below:
#include <synch.h>
mutex_t Lock;
int mutex_init(
mutex_t *Lock, /* pointer to a lock */
USYNC_THREAD, /* use this in CS270 */
(void *) NULL); /* always use this */
int mutex_lock(
mutex_t *Lock); /* pointer to a lock */
int mutex_unlock(
mutex_t *Lock); /* pointer to a lock */
#include <synch.h>
mutex_t Lock;
mutex_lock(&Lock);
..... in critical section .....
mutex_unlock(&Lock);