`
emowuyi
  • 浏览: 1477837 次
文章分类
社区版块
存档分类
最新评论

linux内核分析之工作队列

 
阅读更多

可延迟函数和工作队列非常相似,但是他们的区别还是很大的。主要区别在于:可延迟函数运行在中断上下文中,而工作队列中的函数运行在进程上下文中。在中断上下文中不可能发生进程切换。可延迟函数和工作队列中的函数都不能访问进程的用户态地址空间。

涉及数据结构

工作队列操作

创建

最终都会调用如下函数执行

可见,工作队列在创建时就唤醒创建的内核线程,下面我们看看他创建的内核线程

可见,创建的内核线程是执行工作队列中的所有函数。
除了最重要的创建函数,内核提供了一系列函数对其操作和方便编程,在这里介绍一个插入队列的函数。

最终调用insert_work函数

可见,在队列插入的时候就实现了唤醒。其他的函数不一一说了,了解了他的实现原理,看懂不难。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics