use*_*434 5 linux-device-driver interrupt-handling embedded-linux
我过去几个月经历了ldd3.我先读了几章.
这两个链接使用不同的方式,一个是使用工作队列,另一个是使用任务队列.实施下半部分.
http://www.tldp.org/LDP/lkmpg/2.4/html/x1210.html
http://www.linuxtopia.org/online_books/linux_kernel/linux_kernel_module_programming_2.6/x1256.html
我有一些疑问tasklet, taskqueue, work-queue似乎在空闲时间做了一些任务: -
a)这三者之间的差异到底是什么?
b)哪个应该用于中断处理程序的下半部分?
困惑...... ???
Tasklet和工作队列通常用在下半部,但它们可以在任何地方使用,没有限制
关于差异。
1) Tasklet 用于中断上下文。所有tasklet代码都必须是原子的,因此应用于原子上下文的所有规则都将应用于它。例如。他们无法睡眠(因为无法重新安排)或长时间持有锁。
2)与Tasklet不同,工作队列在进程上下文中执行,这意味着它们可以长时间休眠并持有锁。
简而言之,tasklet 用于快速执行,因为它们无法休眠,而工作队列用于下半部分正常执行的情况。两者都由内核稍后执行。
| 归档时间: |
|
| 查看次数: |
11054 次 |
| 最近记录: |