码农知识堂 - 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 程序的过程入手。
     

  • 相关阅读:
    javaScript:DOM元素的获取(静态/动态获取)
    2020最新Java常见面试题及答案
    Spring-Cloud-Ribbon-02
    【学习笔记66】JavaScript的深浅拷贝
    这次,听人大教授讲讲分布式数据库的多级一致性|TDSQL 关键技术突破
    micropython 可视化音频 频谱解析(应该是全网首家)(预告,还没研究完成)
    【Shell 脚本速成】03、Shell 脚本实战案例(一)数据磁盘初始化
    LPDDR4详解
    麒麟桌面系统CVE-2024-1086漏洞修复
    Unity 制作KinematicCharacterController
  • 原文地址:https://blog.csdn.net/zhaoyangjian724/article/details/133977495
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号