32 lines
		
	
	
		
			668 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			668 B
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |