wait_event_timeout 函数的主要作用是等待某个条件或事件的发生。它接受一个超时时间参数,如果在超时时间内事件发生了,则函数会立即返回表示事件已经发生的值;如果超时时间到达而事件仍未发生,则函数会返回一个表示超时的值。 2. wait_event_timeout 函数的返回值类型和意义 wait_event_timeout 函数的返回值类型通常...
这个用法在等待结束后会检查返回值,如果返回0表示等待超时,否则表示条件满足或者被唤醒。 3. wait_event_timeout函数的参数解释如下: •wait_queue:表示等待队列,用于等待事件的释放。 •condition:表示等待的条件,当条件成立时结束等待。 •timeout:表示等待的超时时间,以jiffies为单位,如果超过这个时间还没有等...
__ret = __wait_event_interruptible_timeout(wq_head, \ condition, timeout); \ __ret; \ }) 2. 使用场景 睡眠到条件满足或者超时退出睡眠状态 3. 支持可中断的睡眠,意味着可以发送信号给睡眠的进程,进程会对信号进行响应 4. 返回值解析 4.1 当返回值大于0时,表示返回的是剩余的时间(以jiffy为单位),...
3,signal_pending(current) :检查当前进程是否有信号处理,返回值不为0则表示有信号需要处理。 返回-ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。(此函数只检查是否有信号,不处理信号) 条件不满足,则产生信号、开始等待。若返回非0,则表示没有信号需要处理,继续循环重新开始系统调用;若返回0...
返回-ERESTARTSYS:意味着在等待过程中,被信号打断了(因为该函数休眠的状态是TASK_INTERRUPTIBLE,可以被信号中断),用户可以根据这个返回值做进一步的处理,比如可以重新调用wait_event_interruptible_timeout进入休眠等待。 492行用于debug,wait_event_interruptible_timeout在condition不为true时会休眠,因此不能在原子上下文中调...
零:正常返回值 大于零:函数提前返回(比如响应某个信号),返回值为剩余时间 三、使用实例 1.wait_event_interrruptible_timeout (1)初始化等待队列 int flags = 0; wait_queue_head_t select_wait; init_waitqueue_head(&select_wait); (2)等待事件的发生(条件满足) ...
3,signal_pending(current):检查当前进程是否有信号处理,返回值不为0则表示有信号需要处理。 返回-ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。(此函数只检查是否有信号,不处理信号) 条件不满足,则产生信号、开始等待。若返回非0,则表示没有信号需要处理,继续循环重新开始系统调用;若返回0,...