分类: LINUX
2009-03-12 08:57:00
Semaphore是用于保护临界区的一种常用方法。
与自旋锁相同的是,只用得到信号量的进程才能执行临界代码。
不同的是,当获取不到信号量时,进程不会原地打转而是进入休眠等待状态。
Int down_interruptible(struct semaphore * sem)
Down()进入睡眠状态的进程不能被信号打断
Down_interruptible进入睡眠状态的进程能被信号打断
Wait_event_interruptible(queue,condition)等待事件!满足condition时,等待队列被唤醒。
Linux驱动程序中,使用wait queue来实现阻塞进程的唤醒。
Select 和poll用于查询设备的状态。以便用户获知能否对设备进行非阻塞访问。它们都需要设备驱动程序中的poll函数支持。
void poll_wait(struct file *filp, wait_queue_heat_t *queue, poll_table * wait);
poll_wait函数所做的工作是把当前进程添加到wait参数指定的等待列表(poll_table)中。