设为首页 加入收藏

TOP

Linux内核同步机制之completion
2014-11-24 13:15:20 来源: 作者: 【 】 浏览:0
Tags:Linux 内核 同步 机制 completion


结构与初始化


Completion在内核中的实现基于等待队列(关于等待队列理论知识在前面的文章中有介绍),completion结构很简单:



和信号量一样,初始化分为静态初始化和动态初始化两种情况:



动态初始化:


可见,两种初始化都将用于同步的done原子量置位了0,后面我们会看到,该变量在wait相关函数中减一,在complete系列函数中加一。


实现


同步函数一般都成对出现,completion也不例外,我们看看最基本的两个complete和wait_for_completion函数的实现。


wait_for_completion最终由下面函数实现:


而complete实现如下:


不看内核实现的源代码我们也能想到他的实现,不外乎在wait函数中循环等待done变为可用(正),而另一边的complete函数为唤醒函数,当然是将done加一,唤醒待处理的函数。是的,从上面的代码看到,和我们想的一样。内核也是这样做的。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux内核实践之序列文件 下一篇Linux内核实践之工作队列

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: