当前位置: 首页 > news >正文

2.13 Android ebpf非网络相关帮助函数API汇总(十二 本章完)

1.long bpf_user_ringbuf_drain(struct bpf_map *map, void *callback_fn, void *ctx, u64 flags)
描述:从指定的用户环形缓冲区中排出样本,并为每个此类样本调用提供的回调:

long (*callback_fn)(struct bpf_dynptr *dynptr, void *ctx);

如果callback_fn返回0,帮助函数将继续尝试耗尽下一个样本,最多可达BPF_MAX_USER_RINGBUF_SAMPLES样本。如果返回值为1,则帮助函数将跳过其余样本并返回。其他返回值现在不使用,否则将被verifier拒绝。

返回值:如果在排出样本时未遇到错误,则返回排出的样本数;如果环形缓冲区中不存在样本,则为 0。如果用户空间生产者在此映射上等待 epoll,并且至少有一个样本被耗尽,他们将收到一个事件通知,通知他们环形缓冲区中的可用空间。如果将 BPF_RB_NO_WAKEUP 标志传递给此函数,则不会发送唤醒通知。如果传递了 BPF_RB_FORCE_WAKEUP 标志,即使没有样本被耗尽,也会发送唤醒通知。

如果失败,则返回下面几种:

-EBUSY:如果环形缓冲区存在竞争,并且另一个调用上下文正在同时耗尽环形缓冲区。

-EINVAL 如果用户空间由于生产者位置未与 8 字节对齐、样本未与 8 字节对齐或生产者位置与样本的广告长度不匹配而无法正确跟踪环形缓冲区。

-E2BIG 如果用户空间尝试发布大于环形缓冲区大小的样本,或者无法容纳在 struct bpf_dynptr 中。

2.u64 bpf_ktime_get_tai_ns(void)

描述:返回一个由墙上时钟时间派生的不可设置的系统范

http://www.lryc.cn/news/112406.html

相关文章:

  • 关于游戏的笔记
  • vue diff 前后缀+最长递增子序列算法
  • 【Python】Locust持续优化:InfluxDB与Grafana实现数据持久化与可视化分析
  • 数组模拟循环链表
  • 第三章 图论 No.5最小生成树之虚拟源点,完全图与次小生成树
  • RESTful API的讲解以及用PHP实现RESTful API
  • Spring中@Component和@Bean的区别
  • 【问题解决】mysql 数据库字符串分割之后多行输出方法
  • flutter开发实战-时间显示刚刚几分钟前几小时前
  • 导出LLaMA等LLM模型为onnx
  • 回顾 OWASP 机器学习十大风险
  • ENSP软件的基本使用命令(第三十一课)
  • 五、FreeRTOS数据类型和编程规范
  • 码出高效_第二章 | 面向对象_上
  • 大学生课设实训|基于springboot的在线拍卖系统
  • 论文阅读 - Social bot detection in the age of ChatGPT: Challenges and opportunities
  • FPGA优质开源项目 - UDP RGMII千兆以太网
  • 学C的第三十二天【动态内存管理】
  • 聊聊elasticsearch的data-streams
  • unreal engine c++ 创建tcp server, tcp client
  • 24届华东理工大学近5年自动化考研院校分析
  • 初识集合和背后的数据结构
  • 选择适合你的数据可视化工具:提升洞察力的关键决策
  • H5中的draggable
  • 搭建SVN服务器
  • OpenCV之信用卡识别实战
  • Detector定位算法在FPGA中的实现——section1 原理推导
  • 心电信号去噪:方法与应用
  • 睡眠助手/白噪音/助眠夜曲微信小程序源码下载 附教程
  • Spring Cloud常见问题处理和代码分析