131
社区成员




在需要禁用中断以实现序列化的地方,无论他们运行在哪个阶段(实时阶段或非实时阶段,即out-of-band或in-band阶段),对于原子操作来说,虚拟化中断保护就起不到我们需要的严格的序列化的作用,所以需要进行修改。通常,涉及以下文件:
同样地,也涉及一些和cpu架构相关的特定代码,譬如:
这些修改是为了使这些原子操作可用于保护那些需要同时从两个阶段(实时和非实时阶段)访问的数据。替换中断虚拟化的一种常见方法涉及将对使用虚拟化 的local_irq_save()、local_irq_restore() API 的调用替换为hard非虚拟化的对应API。
同样,此类操作也存在于特定于体系结构的代码中,需要覆盖它们的通用定义。例如,ARM 端口定义了自己的原子操作版本,必须修改成真正的中断保护: