\subsection*{semaphore}
Semaphores are used to protect critical data structures and regions of code.
y\SeeModule{include/asm/\\semaphore.h}
\begin{tscreen}\begin{verbatim}
struct semaphore {
    int count;
    int waking;
    int lock ;                /* to make waking testing atomic */
    struct wait_queue *wait;
};
\end{verbatim}\end{tscreen}
