Barrier
Barrier 提供 CPU(Central Processing Unit)内存屏障操作,包括通用内存屏障、读内存屏障、写内存屏障以及 SMP(Symmetric Multiprocessing)条件下的内存屏障,同时提供指令同步屏障、数据同步屏障与数据内存屏障操作。
模块公共头文件
接口清单
| 接口名称 | 功能简述 |
|---|---|
| osal_mb | 提供通用 CPU 内存屏障功能 |
| osal_rmb | 提供读内存屏障功能 |
| osal_wmb | 提供写内存屏障功能 |
| osal_smp_mb | 提供 SMP 条件下的通用内存屏障功能 |
| osal_smp_rmb | 提供 SMP 条件下的读内存屏障功能 |
| osal_smp_wmb | 提供 SMP 条件下的写内存屏障功能 |
| osal_isb | 提供指令同步屏障功能 |
| osal_dsb | 提供数据同步屏障功能 |
| osal_dmb | 提供数据内存屏障功能 |
Functions
osal_mb
声明头文件
功能说明
- 提供通用 CPU 内存屏障功能。
- 确保屏障之前的所有内存访问操作在屏障之后的内存访问操作执行前完成。
- 对读访问和写访问均产生屏障效果。
前置条件
- 运行环境约束:当前接口支持在 Linux 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| USER_BIT_64 | 特性宏 | 支持 64 位用户态特性(分支级,无前缀注入宏) | 由构建目标决定 |
osal_rmb
声明头文件
功能说明
- 提供读内存屏障功能。
- 确保屏障之前的所有读操作在屏障之后的读操作执行前完成。
- 仅约束读访问的执行顺序。
前置条件
- 运行环境约束:当前接口支持在 Linux 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| USER_BIT_64 | 特性宏 | 支持 64 位用户态特性(分支级,无前缀注入宏) | 由构建目标决定 |
osal_wmb
声明头文件
功能说明
- 提供写内存屏障功能。
- 确保屏障之前的所有写操作在屏障之后的写操作执行前完成。
- 仅约束写访问的执行顺序。
前置条件
- 运行环境约束:当前接口支持在 Linux 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
osal_smp_mb
声明头文件
功能说明
- 提供 SMP 条件下的通用 CPU 内存屏障功能。
- 在多处理器系统中确保屏障前后内存访问的全局顺序。
- 屏障效果在 SMP 系统下生效。
前置条件
- 运行环境约束:当前接口支持在 Linux 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
osal_smp_rmb
声明头文件
功能说明
- 提供 SMP 条件下的读内存屏障功能。
- 在多处理器系统中确保屏障前后读操作的全局顺序。
- 屏障效果在 SMP 系统下生效。
前置条件
- 运行环境约束:当前接口支持在 Linux 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| USER_BIT_64 | 特性宏 | 支持 64 位用户态特性(分支级,无前缀注入宏) | 由构建目标决定 |
osal_smp_wmb
声明头文件
功能说明
- 提供 SMP 条件下的写内存屏障功能。
- 在多处理器系统中确保屏障前后写操作的全局顺序。
- 屏障效果在 SMP 系统下生效。
前置条件
- 运行环境约束:当前接口支持在 Linux 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
osal_isb
声明头文件
功能说明
- 提供指令同步屏障功能。
- 刷新处理器流水线,确保屏障之后的指令从缓存或内存重新取指。
- 确保屏障之前的上下文修改操作对屏障之后的指令可见。
前置条件
- 运行环境约束:当前接口支持在 Linux 和 LiteOS 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_MIPS | 特性宏 | 支持 MIPS 架构条件编译特性(分支级) | 由构建目标决定 |
| HW_LITEOS_OPEN_VERSION_NUM | 特性宏 | 支持 LiteOS 开源版本适配特性(分支级,无前缀注入宏) | 由构建目标决定 |
osal_dsb
声明头文件
功能说明
- 提供数据同步屏障功能。
- 确保屏障之前的所有显式内存访问和 Cache、分支预测器及 TLB(Translation Lookaside Buffer)维护操作完成后,屏障之后的指令才开始执行。
- 阻塞后续指令执行直到屏障前所有操作完成。
前置条件
- 运行环境约束:当前接口支持在 Linux 和 LiteOS 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_MIPS | 特性宏 | 支持 MIPS 架构条件编译特性(分支级) | 由构建目标决定 |
| CONFIG_64BIT | 特性宏 | 支持 64 位架构特性(分支级) | 由构建目标决定 |
| USER_BIT_64 | 特性宏 | 支持 64 位用户态特性(分支级,无前缀注入宏) | 由构建目标决定 |
| HW_LITEOS_OPEN_VERSION_NUM | 特性宏 | 支持 LiteOS 开源版本适配特性(分支级,无前缀注入宏) | 由构建目标决定 |
osal_dmb
声明头文件
功能说明
- 提供数据内存屏障功能。
- 确保屏障之前的所有显式内存访问在屏障之后的显式内存访问之前被观察到。
- 不影响处理器上其他指令的执行顺序。
前置条件
- 运行环境约束:当前接口支持在 Linux 和 LiteOS 系统下调用。
- 依赖关系:当前接口依赖 CPU 内存屏障指令可用。
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_MIPS | 特性宏 | 支持 MIPS 架构条件编译特性(分支级) | 由构建目标决定 |
| CONFIG_64BIT | 特性宏 | 支持 64 位架构特性(分支级) | 由构建目标决定 |
| USER_BIT_64 | 特性宏 | 支持 64 位用户态特性(分支级,无前缀注入宏) | 由构建目标决定 |
| HW_LITEOS_OPEN_VERSION_NUM | 特性宏 | 支持 LiteOS 开源版本适配特性(分支级,无前缀注入宏) | 由构建目标决定 |