spin_unlock_irqrestore(&mdp_spin_lock, flag);if(need_wait)wait_for_completion_killable(&mfd->dma->comp);#ifdefined (CONFIG_MACH_KYLEPLUS_CTC)/* wait until Vsync finishes the current job */if(first_vsync) {if(!wait_for_completion_killable_timeout (&vsync_cntrl.vsync_comp, HZ/10))...
unsigned long timeout) int __sched wait_for_completion_interruptible(struct completion *x) long __sched wait_for_completion_interruptible_timeout(struct completion *x, unsigned long timeout) int __sched wait_for_completion_killable(struct completion *x) ...
其他变体包括使用TASK_KILLABLE作为指定任务状态的_killable,如果被中断则返回-ERESTARTSYS,否则如果完成被实现则返回0。还有一个_timeout变体: longwait_for_completion_killable(structcompletion *done) longwait_for_completion_killable_timeout(structcompletion *done,unsignedlongtimeout) _io变体wait_for_completion_i...
wait_for_completion_killable()使用允许被杀死的阻塞。 四者都是wait_for_completion()的变种,通过wait_for_common()调用do_wait_for_common()实现。 voidcomplete(struct
在使用wait_for_completion()的_timeout()或_killable()/_interruptible()变体时,应特别小心,因为必须确保在所有相关活动(complete()或reinit_completion())发生之前不会发生内存释放,即使这些等待函数由于超时或信号触发而提前返回。 通过调用init_completion()来初始化动态分配的完成对象: ...
extern int wait_for_completion_killable(struct completion *x); extern unsigned long wait_for_completion_timeout(struct completion *x, unsigned long timeout); extern unsigned long wait_for_completion_interruptible_timeout( struct completion *x, unsigned long timeout); extern unsigned long wait_for...
wait_for_completion_killable_timeout wait_for_completion_killable_timeout: - waits for completion of a task (w/(to,killable))*@x: holds the state of this particular completion*@timeout: timeout value in jiffies* This waits for either a completion of a specific task to be源...
Commit 0cb6424 ("firmware_loader: abort request if wait_for_completion is interrupted") added via 4.0 added support to abort the fallback mechanism when a signal was detected and wait_for_completion_interruptible() returned -ERESTARTSYS -- for instance when a user hits CTRL-C. The abort was...
...这里是其调用流程图: wait_on_page_locked_killable 的阻塞一般发生在 do_page_fault 里, 也就是在应用程序访问虚拟内存时发生的, 众所周知, do_page_fault...第一个 if 语句判断访问的文件所在的文件系统的操作方法中是否有 readpages 函数, 若有则执行该函数后直接返回, 若没有则执行下面的 for ...