diff --git a/README.md b/README.md index 3fd6a0d..ceadfb1 100644 --- a/README.md +++ b/README.md @@ -17,28 +17,28 @@ Gitee 镜像: ## 目录 -- [lesson 0-introduce](0-introduce/README.md) 介绍 eBPF 的基本概念和常见的开发工具 -- [lesson 1-helloworld](1-helloworld/README.md) 使用 eBPF 开发最简单的「Hello World」程序,介绍 eBPF 的基本框架和开发流程 -- [lesson 2-kprobe-unlink](2-kprobe-unlink/README.md) 在 eBPF 中使用 kprobe 捕获 unlink 系统调用 -- [lesson 3-fentry-unlink](3-fentry-unlink/README.md) 在 eBPF 中使用 fentry 捕获 unlink 系统调用 -- [lesson 4-opensnoop](4-opensnoop/README.md) 使用 eBPF 捕获进程打开文件的系统调用集合,使用全局变量在 eBPF 中过滤进程 pid -- [lesson 5-uprobe-bashreadline](5-uprobe-bashreadline/README.md) 在 eBPF 中使用 uprobe 捕获 bash 的 readline 函数调用 -- [lesson 6-sigsnoop](6-sigsnoop/README.md) 捕获进程发送信号的系统调用集合,使用 hash map 保存状态 -- [lesson 7-execsnoop](7-execsnoop/README.md) 捕获进程执行时间,通过 perf event array 向用户态打印输出 -- [lesson 8-execsnoop](8-exitsnoop/README.md) 捕获进程退出事件,使用 ring buffer 向用户态打印输出 -- [lesson 9-runqlat](9-runqlat/README.md) 捕获进程调度延迟,以直方图方式记录 -- [lesson 10-hardirqs](10-hardirqs/README.md) 使用 hardirqs 或 softirqs 捕获中断事件 -- [lesson 11-bootstrap](11-bootstrap/README.md) 使用 libbpf-boostrap 为 eBPF 编写原生的 libbpf 用户态代码,并建立完整的 libbpf 工程。 -- [lesson 12-profile](12-profile/README.md) 使用 eBPF 进行性能分析 -- [lesson 13-tcpconnlat](13-tcpconnlat/README.md) 记录 TCP 连接延迟,并使用 libbpf-boostrap 或 Webassembly (WASM)在用户态处理数据 -- [lesson 14-tcpstates](14-tcpstates/README.md) 记录 TCP 连接状态 -- [lesson 15-tcprtt](15-tcprtt/README.md) 以直方图方式记录 TCP RTT,并使用 libbpf-boostrap 或 WASM 在用户态采样 map 信息 -- [lesson 16-memleak](16-memleak/README.md) 检测内存泄漏 -- [lesson 17-biopattern](17-biopattern/README.md) 捕获磁盘 IO 模式 -- [lesson 18-further-reading](18-further-reading/README.md) 更进一步的相关资料? -- [lesson 19-lsm-connect](19-lsm-connect/README.md) 使用 LSM 进行安全检测防御 -- [lesson 20-tc](20-tc/README.md) 使用 eBPF 进行 tc 流量控制 -- [lesson 21-xdp](20-xdp/README.md) 使用 eBPF 进行 XDP 报文处理 +- [lesson 0-introduce](src/0-introduce/README.md) 介绍 eBPF 的基本概念和常见的开发工具 +- [lesson 1-helloworld](src/1-helloworld/README.md) 使用 eBPF 开发最简单的「Hello World」程序,介绍 eBPF 的基本框架和开发流程 +- [lesson 2-kprobe-unlink](src/2-kprobe-unlink/README.md) 在 eBPF 中使用 kprobe 捕获 unlink 系统调用 +- [lesson 3-fentry-unlink](src/3-fentry-unlink/README.md) 在 eBPF 中使用 fentry 捕获 unlink 系统调用 +- [lesson 4-opensnoop](src/4-opensnoop/README.md) 使用 eBPF 捕获进程打开文件的系统调用集合,使用全局变量在 eBPF 中过滤进程 pid +- [lesson 5-uprobe-bashreadline](src/5-uprobe-bashreadline/README.md) 在 eBPF 中使用 uprobe 捕获 bash 的 readline 函数调用 +- [lesson 6-sigsnoop](src/6-sigsnoop/README.md) 捕获进程发送信号的系统调用集合,使用 hash map 保存状态 +- [lesson 7-execsnoop](src/7-execsnoop/README.md) 捕获进程执行时间,通过 perf event array 向用户态打印输出 +- [lesson 8-execsnoop](src/8-exitsnoop/README.md) 捕获进程退出事件,使用 ring buffer 向用户态打印输出 +- [lesson 9-runqlat](src/9-runqlat/README.md) 捕获进程调度延迟,以直方图方式记录 +- [lesson 10-hardirqs](src/10-hardirqs/README.md) 使用 hardirqs 或 softirqs 捕获中断事件 +- [lesson 11-bootstrap](src/11-bootstrap/README.md) 使用 libbpf-boostrap 为 eBPF 编写原生的 libbpf 用户态代码,并建立完整的 libbpf 工程。 +- [lesson 12-profile](src/12-profile/README.md) 使用 eBPF 进行性能分析 +- [lesson 13-tcpconnlat](src/13-tcpconnlat/README.md) 记录 TCP 连接延迟,并使用 libbpf-boostrap 或 Webassembly (WASM)在用户态处理数据 +- [lesson 14-tcpstates](src/14-tcpstates/README.md) 记录 TCP 连接状态 +- [lesson 15-tcprtt](src/15-tcprtt/README.md) 以直方图方式记录 TCP RTT,并使用 libbpf-boostrap 或 WASM 在用户态采样 map 信息 +- [lesson 16-memleak](src/16-memleak/README.md) 检测内存泄漏 +- [lesson 17-biopattern](src/17-biopattern/README.md) 捕获磁盘 IO 模式 +- [lesson 18-further-reading](src/18-further-reading/README.md) 更进一步的相关资料? +- [lesson 19-lsm-connect](src/19-lsm-connect/README.md) 使用 LSM 进行安全检测防御 +- [lesson 20-tc](src/20-tc/README.md) 使用 eBPF 进行 tc 流量控制 +- [lesson 21-xdp](src/20-xdp/README.md) 使用 eBPF 进行 XDP 报文处理 ## 为什么需要基于 libbpf 和 BPF CO-RE 的教程?