package btf import ( "fmt" "unsafe" "github.com/cilium/ebpf/internal" ) type bpfBTFInfo struct { btf internal.Pointer btfSize uint32 id uint32 name internal.Pointer nameLen uint32 kernelBTF uint32 } func bpfGetBTFInfoByFD(fd *internal.FD, btf, name []byte) (*bpfBTFInfo, error) { info := bpfBTFInfo{ btf: internal.NewSlicePointer(btf), btfSize: uint32(len(btf)), name: internal.NewSlicePointer(name), nameLen: uint32(len(name)), } if err := internal.BPFObjGetInfoByFD(fd, unsafe.Pointer(&info), unsafe.Sizeof(info)); err != nil { return nil, fmt.Errorf("can't get program info: %w", err) } return &info, nil }