返回-ERESTARTSYS:意味着在等待过程中,被信号打断了(因为该函数休眠的状态是TASK_INTERRUPTIBLE,可以被信号中断),用户可以根据这个返回值做进一步的处理,比如可以重新调用wait_event_interruptible_timeout进入休眠等待。 492行用于debug,wait_event_interruptible_timeout在condition不为true时会休眠,因此不能在原子上下文中调...
函数原型:wait_event_interruptible_timeout(wq,condition, timeout)*函数作用:~睡眠~,直到condition为真,或timeout超时;*@wq: 要等待的等待队列*@condition: 等待事件发生的条件(一个C表达式 )*@timeout: 超时时间 程序是用来睡眠的(TASK_INTERRUPTIBLE状态下),直到@condition为真,或者收到一个信号。 每次等待队...
在Linux内核编程中,wait_event_interruptible_timeout是处理异步事件等待的核心函数,它采用宏定义实现,其基本功能是让线程在condition条件满足或超时timeout后唤醒。重要的是,它在492行的debug处理中,避免在原子上下文中的使用,防止潜在问题的产生,通过might_sleep机制进行检查。当条件不满足时,该函数会...
1)wait_event_interruptible_timeout是把调用这个函数的进程链入到一个list中,并且 最重要的结构体是wait_queue_head_t,这个结构体包含两个成员变量:spin_lock lock 和 struct list_head task_list 可知这个结构体的目的其实也是比较简单的:就是把一个进程插入到一个队列中去! 函数层层递进,其实调用的是 wait_e...
left =wait_for_completion_interruptible_timeout(&wcn->smd_compl, msecs_to_jiffies(SMD_MSG_TIMEOUT));if(left <=0) { wcn36xx_error("timeout waiting for smd open: %d", ret);returnleft; }return0; } 開發者ID:kvalo,項目名稱:wcn36xx,代碼行數:23,代碼來源:smd.c ...
在下文中一共展示了wait_for_completion_interruptible_timeout函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。 示例1: charlcd_wait_complete_irq ▲点赞 7▼ ...
__ret = __wait_event_interruptible_timeout(wq_head, \ condition, timeout); \ __ret; \ }) 2. 使用场景 睡眠到条件满足或者超时退出睡眠状态 3. 支持可中断的睡眠,意味着可以发送信号给睡眠的进程,进程会对信号进行响应 4. 返回值解析 4.1 当返回值大于0时,表示返回的是剩余的时间(以jiffy为单位)...
函数原型:wait_event_interruptible_timeout(wq, condition, timeout) * 函数作用:~睡眠~,直到condition为真,或timeout超时; * @wq: 要等待的等待队列 * @condition: 等待事件发生的条件(一个C表达式 ) * @timeout: 超时时间 程序是用来睡眠的(TASK_INTERRUPTIBLE状态下),直到@condition为真,或者收到一个信号...