barrier
barrier 提供内存屏障功能,用于确保多处理器系统中内存访问的执行顺序,防止CPU对内存操作进行重排序。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| 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
头文件清单
功能说明
- 提供通用CPU内存屏障功能,确保屏障之前的所有内存访问(读和写)在屏障之后的任何内存访问执行之前完成
- 用于多核处理器系统中,防止CPU对内存操作进行重排序,保证内存访问顺序一致性
- 仅在Linux系统下支持
前置条件
- 运行环境为Linux系统
osal_rmb
头文件清单
功能说明
- 提供读内存屏障功能,确保屏障之前的所有读操作在屏障之后的任何读操作执行之前完成
- 仅对读操作进行排序约束,不限制写操作的执行顺序
- 仅在Linux系统下支持
前置条件
- 运行环境为Linux系统
osal_wmb
头文件清单
功能说明
- 提供写内存屏障功能,确保屏障之前的所有写操作在屏障之后的任何写操作执行之前完成
- 仅对写操作进行排序约束,不限制读操作的执行顺序
- 仅在Linux系统下支持
前置条件
- 运行环境为Linux系统
osal_smp_mb
头文件清单
功能说明
- 提供SMP条件下的通用CPU内存屏障,对应osal_mb的SMP版本
- 在多核处理器系统间确保内存访问顺序一致性
- 仅在Linux系统下支持
前置条件
- 运行环境为Linux系统
- 系统处于SMP多核配置下
osal_smp_rmb
头文件清单
功能说明
- 提供SMP条件下的读内存屏障,对应osal_rmb的SMP版本
- 在多核处理器系统间确保读操作的顺序一致性
- 仅在Linux系统下支持
前置条件
- 运行环境为Linux系统
- 系统处于SMP多核配置下
osal_smp_wmb
头文件清单
功能说明
- 提供SMP条件下的写内存屏障,对应osal_wmb的SMP版本
- 在多核处理器系统间确保写操作的顺序一致性
- 仅在Linux系统下支持
前置条件
- 运行环境为Linux系统
- 系统处于SMP多核配置下
osal_isb
头文件清单
功能说明
- 提供指令同步屏障功能,刷新处理器流水线,确保ISB之后的所有指令从缓存或内存中重新获取
- 确保上下文修改操作(如ASID变更、TLB维护操作、分支预测器维护操作、CP15寄存器修改)在ISB指令之前完成后对后续指令可见
- 确保ISB之后程序顺序中出现的分支以ISB之后可见的上下文写入分支预测逻辑
- 在Linux和LiteOS系统下支持
前置条件
- 运行环境为Linux或LiteOS系统
osal_dsb
头文件清单
功能说明
- 提供数据同步屏障功能,作为特殊类型的内存屏障,确保该指令完成之前,程序顺序中此指令之后的任何指令不会执行
- 该指令完成条件为:此指令之前的所有显式内存访问完成,以及此指令之前的所有Cache、分支预测器和TLB维护操作完成
- 在Linux和LiteOS系统下支持
前置条件
- 运行环境为Linux或LiteOS系统
osal_dmb
头文件清单
功能说明
- 提供数据内存屏障功能,确保程序顺序中DMB指令之前的所有显式内存访问在DMB指令之后的任何显式内存访问之前被观测到
- 不影响处理器上其他指令的执行顺序
- 在Linux和LiteOS系统下支持
前置条件
- 运行环境为Linux或LiteOS系统