假如我们在c语言中声明了两个结构体key、value。
struct key{
char dir[256];
};
struct value{
u64 disable;
};
如果我们想在go中使用,直接在go中写结构体可能类型上处理不对。如果能自动生成go结构体就好了。
在c代码中添加以下两行:
const struct key *unused_key __attribute__((unused));
const struct value *unused_value __attribute__((unused));
在gen.go中修改go:generate
命令:
package main
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go -type key -type value -target amd64 vfstrace vfs-trace.c
- 其中-target amd64指定cpu架构,我的是amd64。
-type
指定我们需要生成go结构体的c结构体名称,有多个c结构体要生成go结构体就添加多个。
生成结果如下:
type vfstraceKey struct{
Dir [256]int8
}
type vfstraceValue struct{
Disable uint64
}