Logo

Linux 内核

6.16.0-rc4

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动 API
  • 子系统
    • 核心子系统
    • 人机接口
    • 网络接口
    • 存储接口
    • 其他子系统
      • 记账
      • CPUFreq - Linux(TM) 内核中的 CPU 频率和电压调节代码
      • EDAC 子系统
      • FPGA
      • I2C/SMBus 子系统
      • 工业 I/O
      • PCMCIA
      • 串行外设接口 (SPI)
      • 1-Wire 子系统
      • 看门狗支持
      • 虚拟化支持
      • 硬件监控
      • 计算加速器
      • 安全文档
      • 加密 API
      • BPF 文档
      • USB 支持
      • PCI 总线子系统
      • 各类杂项设备文档
      • PECI 子系统
      • WMI 子系统
      • TEE 子系统
  • 锁定
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • 开发指南
  • 追踪
  • 故障注入
  • 热补丁
  • Rust
  • 管理
  • 构建系统
  • 报告问题
  • 用户空间工具
  • 用户空间 API
  • 固件
  • 固件和设备树
  • CPU 架构
  • 未分类文档
  • 翻译

本页

  • 显示源

目录

  • 1 BPF ABI 推荐约定和指南 v1.0

    • 1.1 寄存器和调用约定

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 中。

©内核开发社区。| 由 Sphinx 5.3.0 & Alabaster 0.7.16 提供支持 | 页面源