1 BPF ABI 推荐约定和指南 v1.0¶
这是信息性文档的 1.0 版本,其中包含有关生成可移植 BPF 程序二进制文件的推荐约定和指南。
1.1 寄存器和调用约定¶
BPF 有 10 个通用寄存器和一个只读帧指针寄存器,所有寄存器均为 64 位宽。
BPF 调用约定定义为
R0:函数调用的返回值,以及 BPF 程序的退出值
R1 - R5:函数调用的参数
R6 - R9:被调用者保存的寄存器,函数调用将保留这些寄存器
R10:用于访问堆栈的只读帧指针
R0 - R5 是暂存寄存器,如果需要在调用之间使用,BPF 程序需要溢出/填充它们。
BPF 程序需要在执行 EXIT
之前将返回值存储到寄存器 R0 中。