函数原型:wait_event_interruptible_timeout(wq,condition, timeout)*函数作用:~睡眠~,直到condition为真,或timeout超时;*@wq: 要等待的等待队列*@condition: 等待事件发生的条件(一个C表达式 )*@timeout: 超时时间 程序是用来睡眠的(TASK_INTERRUPTIBLE状态下),直到@con
wait_event_timeout()函数是Linux内核中的一个宏,用于实现进程的等待和超时机制。它的用法如下:c复制代码wait_event_timeout(wq_head, condition, timeout);其中,wq_head是等待队列的头部指针,condition是等待的条件,timeout是等待的超时时间(以jiffies为单位)。wait_event_timeout()函数的作用是使进程进入非...
wait_event_timeout(wq, condition, timeout); 相比wait_event,使用wait_event_timeout方式入队的任务,其唤醒条件多了一个超时时间(取值单位是jiffies)。 wait_event_timeout的返回值反映了具体的唤醒条件满足情况: 0:timeout超时,且condition为false; 1:timeout超时,且condition为true; 剩余的jiffies:timeout超时...
当___wait_cond_timeout返回0时,进入494行的主逻辑(main routine)__wait_event_interruptible_timeout中,定义如下。 <include/linux/wait.h> 464 #define __wait_event_interruptible_timeout(wq_head, condition, timeout) \ 465 ___wait_event(wq_head, ___wait_cond_timeout(condition), \ 466 TASK_...
wait_event(wq,condition); 其中wq时要加入的等待队列,condition是C语言表达式表示的等待条件。 每次唤醒等待队列wq时,wq中的所有等待条件condition都会被检查一遍,一旦取值为true,则将对应的任务唤醒,并从wq中移除。 2.2.2 wait_event_timeout 当满足特定条件,或者timeout超时时,当前入队的任务(TASK_UNINTERRUPTIBLE)...
wait_event_lock_irq_cmd(wq, condition, lock, cmd) wait_event_lock_irq(wq, condition, lock) wait_event_interruptible_lock_irq_cmd(wq, condition, lock, cmd) wait_event_interruptible_lock_irq(wq, condition, lock) wait_event_interruptible_lock_irq_timeout(wq, condition, lock, timeout) ...
wait_queue_head_t wq; init_waitqueue_head(&wq); 阻塞接口: wait_event(wq, condition) wait_event_timeout(wq, condition, timeout) wait_event_interruptible(wq, condition) wait_event_interruptible_timeout(wq, condition, timeout) wait_event_hrtimeout(wq, condition, timeout) ...
wait_event_interruptible_lock_irq_timeout(wq, condition, lock, timeout) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 参数 wq 定义的等待队列头, condition 为条件表达式,当wake up后,condition为真时,唤醒阻塞的进程,为假时,继续睡眠。
wait_event_interruptible(wq, condition); wait_event_interruptible_timeout 进程进入休眠状态(TASK_INTERRUPTIBLE),直到条件评估为真或接收到信号或超时。每次唤醒等待队列wq时,都会检查该条件。 如果超时后条件评估为false,则返回0;如果超时后情况评估为true,则返回1;如果超时前情况评估为true,则返回剩余的jiffies(至...
wait_event_interruptible(wq, condition) wait_event_interruptible_timeout(wq, condition, timeout) io_wait_event(wq, condition) 这些方法都是宏定义,其功能类似但是有不同的语义,适用不同的使用场景。 我们以 wait_event 为例来看一下其具体实现,其代码如下(注意注释中高亮部分对其语义的描述): ...