码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 开发一个ebpf程序


    第一步:使用 C 开发一个 eBPF 程序新建一个  hello.c  文件,并输入下面的内容:

    //ebpf程序
    int hello_world(void *ctx)
    {
        bpf_trace_printk("Hello, World!");
        return 0;
    }


    第二步:使用 Python 和 BCC 库开发一个用户态程序

    #!/usr/bin/env python3
    # 1) import bcc library
    from bcc import BPF

    # 2) load BPF program
    b = BPF(src_file="hello.c")
    # 3) attach kprobe
    b.attach_kprobe(event="do_sys_openat2", fn_name="hello_world")
    # 4) read and print /sys/kernel/debug/tracing/trace_pipe
    b.trace_print()


    让我们来看看每一处的具体含义:第 1) 处导入了 BCC  库的 BPF 模块,以便接下来调用;

    第 2) 处调用 BPF() 加载第一步开发的 BPF 源代码;

    第 3) 处将 BPF 程序挂载到内核探针(简称 kprobe),其中  do_sys_openat2() 是系统调用  openat()  在内核中的实现;

    第 4) 处则是读取内核调试文件  /sys/kernel/debug/tracing/trace_pipe  的内容,并打印到标准输出中

    第三步:执行 eBPF 程序

    第三步:执行 eBPF 程序


    开发一个 eBPF 程序需要经过开发 C 语言 eBPF 程序、编译为 BPF 字节码、加载 BPF 字节码到内核、

    内核验证并运行 BPF 字节码,以及用户程序读取 BPF 映射五个步骤。

    使用 BCC 的好处是,它把这几个步骤通过内置框架抽象了起来,并提供了简单易用的 Python 接口,

    这可以帮你大大简化 eBPF 程序的开发。

    BCC 负责了 eBPF 程序的编译和加载过程。因而,要了解 BPF 指令的加载过程,就可以从 BCC 执行 eBPF 程序的过程入手。
     

  • 相关阅读:
    【算法】欧拉筛 输出任意范围内的质数
    0基础学习VR全景平台篇第113篇:矫正拉直全景图 - PTGui Pro教程
    【动态规划】按位与最大的最长子数组
    【计算机网络】 TCP流量控制——滑动窗口和累积应答
    【老生谈算法】自动控制中常用的Matlab函数合集——自动控制
    【JDK 8-集合框架进阶】6.1 parallelStream 并行流
    MasaFramework -- 领域驱动设计
    Nacos注册中心的部署与用法详细介绍
    Mybatis一级二级缓存
    MongoDB副本集群搭建和基础配置
  • 原文地址:https://blog.csdn.net/zhaoyangjian724/article/details/133977495
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号