linux-kernel - 在处理小任务时保存状态?
问题描述
我正在阅读 Linux 内核开发并在 tasklets 章节(https://doc.lagout.org/operating%20system%20/linux/Linux%20Kernel%20Development%2C%203rd%20Edition.pdf page143)中感到困惑。在 tasklet_schedule 函数中,中断状态被保存,而在 taslet_action 中则没有。作者解释说,上下文没有保存在 taslet_action 中,因为该函数知道始终启用中断。我不明白这组中断如何影响保存上下文?谢谢!
解决方案
作者指出 tasklet_schedule 可以在禁用或启用中断的情况下调用。由于它希望它们被禁用,它需要保存它们是否已经被禁用。然后在工作完成后,它知道是否启用它们(如果它们在调用之前启用,则启用它们,如果它们在调用之前禁用,则使它们禁用)。相反,tasklet_action 仅在启用中断的情况下调用,因此检查它们的状态没有意义。他们总是在返回时被禁用和启用。
推荐阅读
- cors - 为什么设置 XMLHttpRequest.withCredentials = true 允许 CORS 请求?
- java - 为什么 CompletableFuture 方法不返回 CompletionState
- python - 不同数字范围内我的数据的计算百分比
- node.js - 可以在 alexa ask-sdk 中为 node.js 使用 templateBuilders 吗?
- nunit - 为.net core 2.2项目运行“dotnet test”时如何将“workers”参数传递给nunit runner
- c++ - 为freebsd 11编译gcc4.8.5时出错:错误:未知类型名称'choke'
- python - AttributeError:“NoneType”对象没有“读取”属性
- python - 如何在 python 烧瓶应用程序中将数据从 postgresql 渲染到 csv?
- php - 在查询结果中添加连字符
- c# - EF Core/SQL Server 包含的导航属性仅在直接用于查询时才有效