完整的wait_event_interruptible()
时间: 2024-02-06 07:42:44 浏览: 98
linux 同步机制1
wait_event_interruptible() 是一个用于等待事件的函数,它会使当前进程进入睡眠状态,直到某个事件被触发或者收到了一个中断信号。它的完整形式如下:
```c
wait_event_interruptible(wait_queue_head_t q, condition)
```
其中,q 是一个等待队列头,condition 是一个等待条件。当 condition 不满足时,wait_event_interruptible() 会将当前进程加入到等待队列 q 中,并将进程状态设置为 TASK_INTERRUPTIBLE,然后进入睡眠状态,等待条件 condition 发生变化。如果进程收到一个中断信号,它会从睡眠状态中唤醒,并返回 -ERESTARTSYS 错误码。
当条件 condition 发生变化时,wait_event_interruptible() 会将进程状态设置为 TASK_RUNNING,并返回 0。此时进程可以继续运行。
wait_event_interruptible() 也有一个带有超时时间的版本 wait_event_interruptible_timeout(),它可以设置一个超时时间,如果在超时时间内条件 condition 仍未满足,函数会自动返回并返回 -ETIMEOUT 错误码。
阅读全文