12345678910111213141516171819202122232425262728293031 |
- 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
- }
|