wait_event_interruptible返回值解析 1. wait_event_interruptible函数的基本作用 wait_event_interruptible是Linux内核中用于等待某个条件成立的函数。它会使当前进程进入可中断的睡眠状态,直到指定的条件变为真,或者进程接收到一个信号而被唤醒。这个函数通常用于等待硬件操作完成、资源可用等场景。 2. wait_event_interru...
被wait_event_interruptible和从runqueue队列中删除。 2) 如果要被wait_event_interruptible的当前进程有nonblocked pending signals, 那么会直接返回-ERESTARTSYS(i.e. -512),当前进程不会 被wait_event_interruptible 和从runqueue队列中删除。 3) 其他情况下,当前进程会被正常的wait_event_interruptible,并从 runque...
wait_event_interruptible(wait_queue, condition); ``` - wait_queue是一个等待队列(wait_queue_head_t类型),表示该等待事件的等待队列。 - condition是一个条件(返回值为非零表示满足条件,返回值为零表示不满足条件),表示需要等待的条件。 函数的作用是阻塞当前进程,直到等待的条件发生或者被中断。如果等待条件...
返回-ERESTARTSYS:意味着在等待过程中,被信号打断了(因为该函数休眠的状态是TASK_INTERRUPTIBLE,可以被信号中断),用户可以根据这个返回值做进一步的处理,比如可以重新调用wait_event_interruptible_timeout进入休眠等待。 492行用于debug,wait_event_interruptible_timeout在condition不为true时会休眠,因此不能在原子上下文中调...
__ret = __wait_event_interruptible_timeout(wq_head, \ condition, timeout); \ __ret; \ }) 2. 使用场景 睡眠到条件满足或者超时退出睡眠状态 3. 支持可中断的睡眠,意味着可以发送信号给睡眠的进程,进程会对信号进行响应 4. 返回值解析 4.1 当返回值大于0时,表示返回的是剩余的时间(以jiffy为单位)...
51CTO博客已为您找到关于wait_event_interruptible的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及wait_event_interruptible问答内容。更多wait_event_interruptible相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
wait_event_cmd(wq, condition, cmd1, cmd2); 4 wait_event_interruptible 当满足特定条件或者收到信号时,当前入队的任务(TASK_INTERRUPTIBLE)会被唤醒: wait_event_interruptible(wq, condition); 返回值-ERESTARTSYS表示当前入队的任务被信号中断,为0表示是condition为true导致任务被唤醒...
wait_event_interruptible:可被信号中断的睡眠,被信号打断唤醒时,返回负值 -ERESTARTSYS;wake up 时,条件满足的,返回 0。除了 wait_event 没有返回值,其它的都有返回,有返回值的一般都要判断返回值。如下例: int flag = 0; if(wait_event_interruptible(&wq,flag == 1)) ...
/*** wait_event_interruptible_timeout - sleep until a condition gets true or a timeout elapses* @wq: the waitqueue to wait on* @condition: a C expression for the event to wait for* @timeout: timeout, in jiffies** The process is put to sleep (TASK_INTERRUPTIBLE) until the* @cond...
在wait_event_interruptible()中首先判断condition是不是已经满足,如果是则直接返回0,否则调用__wait_event_interruptible(),并用__ret来存放返回值 --- #define wait_event_interruptible(wq, condition) \ ({ \ int __ret = 0; \ if (!(condition)) \ __wait_event_interruptible(wq, condition...