1个不稳定版本
新 0.1.0 | 2024年8月9日 |
---|
在缓存类别中排名第97
每月下载量160
用于static-keys
9KB
109 行
clear-cache
无GCC/Clang依赖的__builtin___clear_cache
的原生实现。
来自GCC文档
此函数用于刷新处理器指令缓存,范围为begin(包含)到end(不包含)。某些目标要求在修改包含代码的内存后刷新指令缓存,以便获得确定性行为。
如果目标不需要指令缓存刷新,则
__builtin___clear_cache
没有任何效果。否则,要么直接在指令缓存中生成指令以清除指令缓存,要么调用libgcc中的__clear_cache
函数。
来自LLVM文档
llvm.clear_cache
内省确保指定的范围内对处理器执行单元的修改可见。在指令和数据缓存非统一的平台上,实现将刷新指令缓存。在指令和数据缓存一致的平台上(例如x86),此内省是空操作。在指令和数据缓存非一致的平台上(例如ARM、MIPS),内省被降低为适当的指令或系统调用,如果缓存刷新需要特殊权限。
默认行为是发出对运行时库中的
__clear_cache
的调用。此内省不会清空指令流水线。当前函数的修改超出了内省的作用域。
当前实现取自LLVM的实现
当前CI测试的平台
-
Linux
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl
i686-unknown-linux-gnu
aarch64-unknown-linux-gnu
riscv64gc-unknown-linux-gnu
loongarch64-unknown-linux-gnu
-
macOS
aarch64-apple-darwin
-
Windows
x86_64-pc-windows-msvc
i686-pc-windows-msvc
依赖项
约0–35MB
约527K SLoC