# Summary

# eBPF 实践教程：基于 libbpf 和 CO-RE

- [eBPF 入门开发实践教程一：介绍 eBPF 的基本概念、常见的开发工具](0-introduce/README.md)
- [eBPF 入门开发实践教程二：Hello World，基本框架和开发流程](1-helloworld/README.md)
- [eBPF 入门开发实践教程二：在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用](2-kprobe-unlink/README.md)
- [eBPF 入门开发实践教程三：在 eBPF 中使用 fentry 监测捕获 unlink 系统调用](3-fentry-unlink/README.md)
- [eBPF 入门开发实践教程四：在 eBPF 中捕获进程打开文件的系统调用集合，使用全局变量过滤进程 pid](4-opensnoop/README.md)
- [eBPF 入门开发实践教程五：在 eBPF 中使用  uprobe 捕获 bash 的 readline 函数调用](5-uprobe-bashreadline/README.md)
- [eBPF 入门开发实践教程六：捕获进程发送信号的系统调用集合，使用 hash map 保存状态](6-sigsnoop/README.md)
- [eBPF 入门实践教程七：捕获进程执行/退出时间，通过 perf event array 向用户态打印输出](7-execsnoop/README.md)
- [eBPF 入门开发实践教程八：在 eBPF 中使用 exitsnoop 监控进程退出事件，使用 ring buffer 向用户态打印输出](8-exitsnoop/README.md)
- [eBPF 入门开发实践教程九：一个 Linux 内核 BPF 程序，通过柱状图来总结调度程序运行队列延迟，显示任务等待运行在 CPU 上的时间长度](9-runqlat/README.md)
- [eBPF 入门开发实践教程十：在 eBPF 中使用 hardirqs 或 softirqs 捕获中断事件](10-hardirqs/README.md)
- [eBPF 入门开发实践教程十一：在 eBPF 中使用 bootstrap 开发用户态程序并跟踪 exec() 和 exit() 系统调用](11-bootstrap/README.md)
- [eBPF入门实践教程：使用 libbpf-bootstrap 开发程序统计 TCP 连接延时](13-tcpconnlat/README.md)
- [eBPF 入门实践教程：编写 eBPF 程序 tcpconnlat 测量 tcp 连接延时](13-tcpconnlat/tcpconnlat.md)
- [eBPF入门实践教程：使用 libbpf-bootstrap 开发程序统计 TCP 连接延时](14-tcpstates/README.md)
- [eBPF 入门实践教程：编写 eBPF 程序 Tcprtt 测量 TCP 连接的往返时间](15-tcprtt/README.md)
- [eBPF 入门实践教程：编写 eBPF 程序 Memleak 监控内存泄漏](16-memleak/README.md)
- [eBPF 入门实践教程：编写 eBPF 程序 Biopattern: 统计随机/顺序磁盘 I/O](17-biopattern/README.md)
- [更多的参考资料](18-further-reading/README.md)
- [eBPF 入门实践教程：使用 LSM 进行安全检测防御](19-lsm-connect/README.md)
- [eBPF 入门实践教程：使用 eBPF 进行 tc 流量控制](20-tc/README.md)

# bcc 开发者教程

- [BPF Features by Linux Kernel Version](bcc-documents/kernel-versions.md)
- [Kernel Configuration for BPF Features](bcc-documents/kernel_config.md)
- [bcc Reference Guide](bcc-documents/reference_guide.md)
- [Special Filtering](bcc-documents/special_filtering.md)
- [bcc Tutorial](bcc-documents/tutorial.md)
- [bcc Python Developer Tutorial](bcc-documents/tutorial_bcc_python_developer.md)
