摘自《BPF之巅:洞悉Linux系统性能》

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <linux/version.h>
#include <bpf/bpf.h>
#include <bcc/libbpf.h>#define DEBUGFS    "/sys/kernel/debug/tracing"char bpf_log_buf[BPF_LOG_BUF_SIZE];int main() {int prog_fd, probe_fd;struct bpf_insn prog[] = {BPF_MOV64_IMM(BPF_REG_1, 0xa21),        /* '!\n' */BPF_STX_MEM(BPF_H, BPF_REG_10, BPF_REG_1, -4),BPF_MOV64_IMM(BPF_REG_1, 0x646c726f),   /* 'orld' */BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_1, -8),BPF_MOV64_IMM(BPF_REG_1, 0x57202c6f),   /* 'o, W' */BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_1, -12),BPF_MOV64_IMM(BPF_REG_1, 0x6c6c6548),   /* 'Hell' */BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_1, -16),BPF_MOV64_IMM(BPF_REG_1, 0),   BPF_STX_MEM(BPF_B, BPF_REG_10, BPF_REG_1, -2),BPF_MOV64_REG(BPF_REG_1, BPF_REG_10),BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -16),BPF_MOV64_IMM(BPF_REG_2, 15),   BPF_RAW_INSN(BPF_JMP|BPF_CALL, 0,0,0, BPF_FUNC_trace_printk),BPF_MOV64_IMM(BPF_REG_0, 0),BPF_EXIT_INSN(),};size_t insns_cnt = sizeof(prog)/sizeof(struct bpf_insn);prog_fd = bpf_load_program(BPF_PROG_TYPE_KPROBE, prog, insns_cnt,"GPL",LINUX_VERSION_CODE, bpf_log_buf,BPF_LOG_BUF_SIZE);if(prog_fd<0) {printf("ERROR: failed to load prog '%s'\n", strerror(errno));return 1;}probe_fd = bpf_attach_kprobe(prog_fd, BPF_PROBE_ENTRY, "hello_world", "do_nanosleep", 0,0);if(prog_fd<0) {return 2;}system("cat " DEBUGFS "/trace_pipe");close(probe_fd);bpf_detach_kprobe("hello_world");close(prog_fd);return 0;
}

Linux BPF hello world C语言示例代码相关推荐

  1. 验证码短信 API 接入指南:Java 语言示例代码

    短信验证码是一种通过短信发送的验证码,通常用于验证用户的身份.保障账户安全和防止恶意攻击等.短信验证码已经成为现代社会中不可或缺的一部分,广泛应用于各种场景,包括用户注册和登录.找回密码等等. 为了满 ...

  2. linux c打印日志文件,linux c下log输出代码模板示例代码

    前言 本文主要介绍了关于linux c下log输出代码模板的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 模板 模本分为两个文件:log.c和log.h. log.c /* ...

  3. r语言调用dll出现错误载入表里没有c字符名,R语言(示例代码)

    1.R语言介绍 R和RStudio 是与计算机进行对话的两个工具 RStudio 是话筒 R是沟通所用的语言 R的由来:基于S语言,由新西兰奥克兰大学的Robert Gentleman和Ross Ih ...

  4. python测网速_使用Linux命令行测试网速(示例代码)

    当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带速度的网站中,Speedtest.net也许是使用最 ...

  5. linux mor命令使用技巧,linux中more命令如何使用(示例代码)

    more命令,功能类似cat,cat命令是整个文件的内容从上到下显示在屏幕上.兄弟连Linux培训教程(more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页 ...

  6. 手机C语言代码,C语言(示例代码)

    JNI java本地开发接口 JNI 是一个协议 这个协议用来沟通java代码和外部的本地代码(c/c++). 通过这个协议,java代码就可以调用外部的c/c++代码 外部的c/c++代码也可以调用 ...

  7. linux命令拉取windows的文件,find命令、文件名后缀以及Linux和Windows互传文件(示例代码)...

    find命令 文件查找: 1.which(一般用于查找命令的绝对路径) 2.whereis(不常用) 3.locate(非实时查找,基于预先定义的数据库.模糊查找,查找速度快.使用前要先安装这个命令y ...

  8. 初学linux系统代码,linux初学者-系统日志(二)(示例代码)

    先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图可以看出,这样的排列或者显示方式会 ...

  9. 端口映射工具linux,Linux下端口映射工具rinetd(示例代码)

    Linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载 wget http://www.boutell.com ...

最新文章

  1. Fedora15使用笔记
  2. 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点...
  3. 基于深度学习算法的NLP集成工具
  4. Hadoop2.2.0--Hadoop Federation、Automatic HA、Yarn完全分布式集群结构
  5. python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
  6. 研究人性弱点的黑客?聊聊社会工程学与网络安全
  7. jieba对word文档词频分析
  8. 如何缓解眼睛疲劳酸痛?
  9. mysql 校对规则_MySQL:校对规则
  10. 部门换届推文文字_宿委会换届表彰大会!!!
  11. [Adaptive Autosar]深入理解--学习资料汇总
  12. 计算机网络拓扑图的描述,计算机网络拓扑结构 以下关于星型网络拓扑结构的描述正确的是______。 (多选题 )...
  13. python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试
  14. 小程序内部引导关注公众号实现方法
  15. 达梦数据库(DM)——命令方式开启达梦数据库本地归档的具体方法
  16. CSS 取消input输入框聚焦时的边框(borderoutline)
  17. 第917期机器学习日报(2017-03-23)
  18. 第五章 指向数组的指针
  19. 喜马拉雅三战IPO: “声“意难做、4年累亏近30亿
  20. DevOps教程:DevOps 工具

热门文章

  1. 错误记录(五)Error creating bean with name 'sessionFactory' defined in file
  2. C#回车切换焦点实现实例解析
  3. SPSS 限制检索个案
  4. leetcode题解151-翻转字符串里的单词
  5. UVa-227-谜题
  6. Jumpserver跳板机
  7. jmap查看内存使用情况与生成heapdump
  8. java List和数组转换
  9. Java IO的一些列子
  10. JAVA遍历map元素