【发布时间】:2018-07-13 03:29:55
【问题描述】:
根据docs,kprobes禁用抢占:
探测处理程序在禁用抢占的情况下运行。取决于 架构和优化状态,处理程序也可以运行 禁用中断(例如,kretprobe 处理程序和优化的 kprobe 处理程序在 x86/x86-64 上不禁用中断的情况下运行)。
从commit 9a09f261a 我们可以清楚地看到优化的 kprobes 过去在启用抢占的情况下运行。
为什么会这样?我理解 kprobes 是一种在内核中的特定地址注入一些代码的方法,并且理解任何代码都应该没问题。
- 是什么让 kprobes 如此特别以至于必须禁用抢占?
- 在什么情况下可以重新启用抢占?
【问题讨论】:
标签: linux kernel preemption kprobe