本文主要是介绍6.11 Libbpf-bootstrap(二,Minimal),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在前面
minimal是一个很好的入门示例。可以将其视为一个简单的POC,用于尝试BPF功能。它不使用BPF CO-RE,因此可以使用较旧的内核,并且只需包含系统内核头文件即可获取内核类型定义。这不是构建生产就绪应用程序和工具的最佳方法,但对于本地实验来说已经足够了。
一,BPF侧
minimal.bpf.c
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/* Copyright (c) 2020 Facebook */
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>char LICENSE[] SEC("license") = "Dual BSD/GPL";int my_pid = 0;SEC("tp/syscalls/sys_enter_write")
int handle_tp(void *ctx)
{int pid = bpf_get_current_pid_tgid() >> 32;if (pid != my_pid)return 0;bpf_printk("BPF triggered from PID %d.\n", pid);return 0;
}
#include <linux/bpf.h>
包含了一些使用内核端BPF API所需的基本BPF相关类型和常量(例如,BPF辅助函数标志)。此头文件对于接下来要包含的bpf_helpers.h
头文件是必要的。bpf_helpers.h
由libbpf提供,并包含最常用的宏、常量和BPF辅助定义,这些几乎被每个现有的BPF应用程序所使用。上面提到的bpf_get_current_p
这篇关于6.11 Libbpf-bootstrap(二,Minimal)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!