保护临界区数据结构和代码信号灯。
[b]struct semaphore {
int count;
int waking;
int lock ; [/b] [i]/* to make waking testing atomic */[/i]
[b]struct wait_queue *wait;
};[/b]
[b]struct semaphore {
int count;
int waking;
int lock ; [/b] [i]/* to make waking testing atomic */[/i]
[b]struct wait_queue *wait;
};[/b]