diff --git a/10-hardirqs/README.md b/10-hardirqs/README.md index 282545a..2267ef7 100644 --- a/10-hardirqs/README.md +++ b/10-hardirqs/README.md @@ -153,6 +153,8 @@ char LICENSE[] SEC("license") = "GPL"; ## 运行代码 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + 要编译这个程序,请使用 ecc 工具: ```console diff --git a/2-kprobe-unlink/README.md b/2-kprobe-unlink/README.md index 233254a..c2509fa 100644 --- a/2-kprobe-unlink/README.md +++ b/2-kprobe-unlink/README.md @@ -62,6 +62,8 @@ int BPF_KRETPROBE(do_unlinkat_exit, long ret) kprobe 是 eBPF 用于处理内核空间入口和出口(返回)探针(kprobe 和 kretprobe)的一个例子。它将 kprobe 和 kretprobe BPF 程序附加到 do_unlinkat() 函数上,并使用 bpf_printk() 宏分别记录 PID、文件名和返回值。 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。 + 要编译这个程序,请使用 ecc 工具: ```console diff --git a/3-fentry-unlink/README.md b/3-fentry-unlink/README.md index 42ab2c4..68841a5 100644 --- a/3-fentry-unlink/README.md +++ b/3-fentry-unlink/README.md @@ -40,6 +40,8 @@ int BPF_PROG(do_unlinkat_exit, int dfd, struct filename *name, long ret) 从 5.5 内核开始,fentry 和 fexit 程序可用。 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + 编译运行上述代码: ```console diff --git a/4-opensnoop/README.md b/4-opensnoop/README.md index 55b74d7..66179d2 100644 --- a/4-opensnoop/README.md +++ b/4-opensnoop/README.md @@ -35,6 +35,8 @@ char LICENSE[] SEC("license") = "GPL"; 上面的 eBPF 程序通过定义函数 tracepoint__syscalls__sys_enter_openat 并使用 SEC 宏把它们附加到 sys_enter_openat 的 tracepoint(即在进入 openat 系统调用时执行)。这个函数通过使用 bpf_get_current_pid_tgid 函数获取调用 openat 系统调用的进程 ID,并使用 bpf_printk 函数在内核日志中打印出来。 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + 编译运行上述代码: ```console diff --git a/5-uprobe-bashreadline/README.md b/5-uprobe-bashreadline/README.md index 645fb4e..013ca3b 100644 --- a/5-uprobe-bashreadline/README.md +++ b/5-uprobe-bashreadline/README.md @@ -81,6 +81,8 @@ BPF_KRETPROBE(printret, const void *ret) 这里的 printret 是探针函数的名称,const void *ret 是探针函数的参数,它代表被捕获的函数的返回值。 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + 编译运行上述代码: ```console diff --git a/6-sigsnoop/README.md b/6-sigsnoop/README.md index fcfd986..bbf8deb 100755 --- a/6-sigsnoop/README.md +++ b/6-sigsnoop/README.md @@ -91,6 +91,8 @@ char LICENSE[] SEC("license") = "Dual BSD/GPL"; 最后,我们还需要使用 SEC 宏来定义探针,并指定要捕获的系统调用的名称,以及要执行的探针函数。 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + 编译运行上述代码: ```shell diff --git a/7-execsnoop/README.md b/7-execsnoop/README.md index 2d833f6..24faa82 100644 --- a/7-execsnoop/README.md +++ b/7-execsnoop/README.md @@ -74,6 +74,8 @@ char LICENSE[] SEC("license") = "GPL"; 使用这段代码,我们就可以捕获 Linux 内核中进程执行的事件, 并分析进程的执行情况。 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + 使用容器编译: ```shell diff --git a/8-exitsnoop/README.md b/8-exitsnoop/README.md index 43228c6..38ba4c7 100644 --- a/8-exitsnoop/README.md +++ b/8-exitsnoop/README.md @@ -66,6 +66,8 @@ int handle_exit(struct trace_event_raw_sched_process_template* ctx) ## Compile and Run +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + Compile: ```shell diff --git a/9-runqlat/README.md b/9-runqlat/README.md index 8ee8995..8d40105 100755 --- a/9-runqlat/README.md +++ b/9-runqlat/README.md @@ -191,6 +191,8 @@ struct hist { ## 编译运行 +eunomia-bpf 是一个结合 Wasm 的开源 eBPF 动态加载运行时和开发工具链,它的目的是简化 eBPF 程序的开发、构建、分发、运行。可以参考 下载和安装 ecc 编译工具链和 ecli 运行时。我们使用 eunomia-bpf 编译运行这个例子。 + Compile: ```shell