首页 > 解决方案 > 在处理小任务时保存状态?

问题描述

我正在阅读 Linux 内核开发并在 tasklets 章节(https://doc.lagout.org/operating%20system%20/linux/Linux%20Kernel%20Development%2C%203rd%20Edition.pdf page143)中感到困惑。在 tasklet_schedule 函数中,中断状态被保存,而在 taslet_action 中则没有。作者解释说,上下文没有保存在 taslet_action 中,因为该函数知道始终启用中断。我不明白这组中断如何影响保存上下文?谢谢!

标签: linux-kernelinterrupt-handlingtasklet

解决方案


作者指出 tasklet_schedule 可以在禁用或启用中断的情况下调用。由于它希望它们被禁用,它需要保存它们是否已经被禁用。然后在工作完成后,它知道是否启用它们(如果它们在调用之前启用,则启用它们,如果它们在调用之前禁用,则使它们禁用)。相反,tasklet_action 仅在启用中断的情况下调用,因此检查它们的状态没有意义。他们总是在返回时被禁用和启用。


推荐阅读