先看个使用实例
init_completion(&tx_done_complete);
wait_for_completion_timeout(&tx_done_complete,msecs_to_jiffies(100));
complete(&tx_done_complete);
分析围绕这三个函数进行
init_completion
struct completion {
unsigned int done;
wait_queue_head_t wait;
};
void init_completion(struct completion *x)
{
x->done = 0;
init_waitqueue_head(&x->wait);
}
wait_for_completion_timeout(&tx_done_complete,msecs_to_jiffies(100));
unsigned long __sched wait_for_completion_timeout(struct completion *x, unsigned long timeout)
{
return wait_for_common(x, timeout, TASK_UNINTERRUPTIBLE);
}
static inline long __sched do_wait_for_common(struct completion *x,long (*action)(long), long timeout, in
内核同步机制解析

本文深入剖析了Linux内核中的同步机制,特别是针对wait_for_completion、complete等函数的工作原理进行了详细解读,并对比了wait_event_interruptible及wake_up_interruptible等接口的实现方式。
最低0.47元/天 解锁文章
1770

被折叠的 条评论
为什么被折叠?



