跳转至

barrier

barrier 提供内存屏障功能,用于确保多处理器系统中内存访问的执行顺序,防止CPU对内存操作进行重排序。

头文件清单

#include "include/osal/memory/osal_barrier.h"

接口清单

接口名称 功能简述
osal_mb 通用CPU内存屏障,确保屏障前的内存访问在屏障后的内存访问之前完成
osal_rmb 读内存屏障,确保屏障前的读操作在屏障后的读操作之前完成
osal_wmb 写内存屏障,确保屏障前的写操作在屏障后的写操作之前完成
osal_smp_mb SMP条件下的通用CPU内存屏障,对应osal_mb的SMP版本
osal_smp_rmb SMP条件下的读内存屏障,对应osal_rmb的SMP版本
osal_smp_wmb SMP条件下的写内存屏障,对应osal_wmb的SMP版本
osal_isb 指令同步屏障,刷新处理器流水线,确保上下文修改操作对后续指令可见
osal_dsb 数据同步屏障,确保所有显式内存访问及Cache/TLB维护操作在后续指令执行前完成
osal_dmb 数据内存屏障,确保屏障前的显式内存访问在屏障后的显式内存访问之前被观测到

Functions

osal_mb

void osal_mb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供通用CPU内存屏障功能,确保屏障之前的所有内存访问(读和写)在屏障之后的任何内存访问执行之前完成
  • 用于多核处理器系统中,防止CPU对内存操作进行重排序,保证内存访问顺序一致性
  • 仅在Linux系统下支持

前置条件

  • 运行环境为Linux系统

osal_rmb

void osal_rmb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供读内存屏障功能,确保屏障之前的所有读操作在屏障之后的任何读操作执行之前完成
  • 仅对读操作进行排序约束,不限制写操作的执行顺序
  • 仅在Linux系统下支持

前置条件

  • 运行环境为Linux系统

osal_wmb

void osal_wmb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供写内存屏障功能,确保屏障之前的所有写操作在屏障之后的任何写操作执行之前完成
  • 仅对写操作进行排序约束,不限制读操作的执行顺序
  • 仅在Linux系统下支持

前置条件

  • 运行环境为Linux系统

osal_smp_mb

void osal_smp_mb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供SMP条件下的通用CPU内存屏障,对应osal_mb的SMP版本
  • 在多核处理器系统间确保内存访问顺序一致性
  • 仅在Linux系统下支持

前置条件

  • 运行环境为Linux系统
  • 系统处于SMP多核配置下

osal_smp_rmb

void osal_smp_rmb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供SMP条件下的读内存屏障,对应osal_rmb的SMP版本
  • 在多核处理器系统间确保读操作的顺序一致性
  • 仅在Linux系统下支持

前置条件

  • 运行环境为Linux系统
  • 系统处于SMP多核配置下

osal_smp_wmb

void osal_smp_wmb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供SMP条件下的写内存屏障,对应osal_wmb的SMP版本
  • 在多核处理器系统间确保写操作的顺序一致性
  • 仅在Linux系统下支持

前置条件

  • 运行环境为Linux系统
  • 系统处于SMP多核配置下

osal_isb

void osal_isb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供指令同步屏障功能,刷新处理器流水线,确保ISB之后的所有指令从缓存或内存中重新获取
  • 确保上下文修改操作(如ASID变更、TLB维护操作、分支预测器维护操作、CP15寄存器修改)在ISB指令之前完成后对后续指令可见
  • 确保ISB之后程序顺序中出现的分支以ISB之后可见的上下文写入分支预测逻辑
  • 在Linux和LiteOS系统下支持

前置条件

  • 运行环境为Linux或LiteOS系统

osal_dsb

void osal_dsb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供数据同步屏障功能,作为特殊类型的内存屏障,确保该指令完成之前,程序顺序中此指令之后的任何指令不会执行
  • 该指令完成条件为:此指令之前的所有显式内存访问完成,以及此指令之前的所有Cache、分支预测器和TLB维护操作完成
  • 在Linux和LiteOS系统下支持

前置条件

  • 运行环境为Linux或LiteOS系统

osal_dmb

void osal_dmb(void)

头文件清单

#include "include/osal/memory/osal_barrier.h"

功能说明

  • 提供数据内存屏障功能,确保程序顺序中DMB指令之前的所有显式内存访问在DMB指令之后的任何显式内存访问之前被观测到
  • 不影响处理器上其他指令的执行顺序
  • 在Linux和LiteOS系统下支持

前置条件

  • 运行环境为Linux或LiteOS系统