Linux BPF hello world C语言示例代码
摘自《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语言示例代码相关推荐
- 验证码短信 API 接入指南:Java 语言示例代码
短信验证码是一种通过短信发送的验证码,通常用于验证用户的身份.保障账户安全和防止恶意攻击等.短信验证码已经成为现代社会中不可或缺的一部分,广泛应用于各种场景,包括用户注册和登录.找回密码等等. 为了满 ...
- linux c打印日志文件,linux c下log输出代码模板示例代码
前言 本文主要介绍了关于linux c下log输出代码模板的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 模板 模本分为两个文件:log.c和log.h. log.c /* ...
- r语言调用dll出现错误载入表里没有c字符名,R语言(示例代码)
1.R语言介绍 R和RStudio 是与计算机进行对话的两个工具 RStudio 是话筒 R是沟通所用的语言 R的由来:基于S语言,由新西兰奥克兰大学的Robert Gentleman和Ross Ih ...
- python测网速_使用Linux命令行测试网速(示例代码)
当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带速度的网站中,Speedtest.net也许是使用最 ...
- linux mor命令使用技巧,linux中more命令如何使用(示例代码)
more命令,功能类似cat,cat命令是整个文件的内容从上到下显示在屏幕上.兄弟连Linux培训教程(more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页 ...
- 手机C语言代码,C语言(示例代码)
JNI java本地开发接口 JNI 是一个协议 这个协议用来沟通java代码和外部的本地代码(c/c++). 通过这个协议,java代码就可以调用外部的c/c++代码 外部的c/c++代码也可以调用 ...
- linux命令拉取windows的文件,find命令、文件名后缀以及Linux和Windows互传文件(示例代码)...
find命令 文件查找: 1.which(一般用于查找命令的绝对路径) 2.whereis(不常用) 3.locate(非实时查找,基于预先定义的数据库.模糊查找,查找速度快.使用前要先安装这个命令y ...
- 初学linux系统代码,linux初学者-系统日志(二)(示例代码)
先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图可以看出,这样的排列或者显示方式会 ...
- 端口映射工具linux,Linux下端口映射工具rinetd(示例代码)
Linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载 wget http://www.boutell.com ...
最新文章
- Fedora15使用笔记
- 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点...
- 基于深度学习算法的NLP集成工具
- Hadoop2.2.0--Hadoop Federation、Automatic HA、Yarn完全分布式集群结构
- python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
- 研究人性弱点的黑客?聊聊社会工程学与网络安全
- jieba对word文档词频分析
- 如何缓解眼睛疲劳酸痛?
- mysql 校对规则_MySQL:校对规则
- 部门换届推文文字_宿委会换届表彰大会!!!
- [Adaptive Autosar]深入理解--学习资料汇总
- 计算机网络拓扑图的描述,计算机网络拓扑结构 以下关于星型网络拓扑结构的描述正确的是______。 (多选题 )...
- python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试
- 小程序内部引导关注公众号实现方法
- 达梦数据库(DM)——命令方式开启达梦数据库本地归档的具体方法
- CSS 取消input输入框聚焦时的边框(borderoutline)
- 第917期机器学习日报(2017-03-23)
- 第五章 指向数组的指针
- 喜马拉雅三战IPO: “声“意难做、4年累亏近30亿
- DevOps教程:DevOps 工具