loader

package
v0.0.1-rc9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2025 License: Apache-2.0 Imports: 17 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateAndMutateConfig

func ValidateAndMutateConfig(cfg *Config) error

Types

type BPFLoader

type BPFLoader struct {
	Logger          *zap.Logger
	Config          *Config
	Collection      *ebpf.Collection
	Skeleton        *skeleton.BpfSkeleton
	PreLoadSkeleton *skeleton.PreLoadBpfSkeleton
	Pollers         []*skeleton.ProgramPoller
	MapHandlers     []MapHandler
	BTFContainer    *container.BTFContainer
	Links           []link.Link

	StatsCollector metrics.Collector
	// contains filtered or unexported fields
}

BPFLoader 实现 eBPF 程序加载器

func NewBPFLoader

func NewBPFLoader(cfg *Config) *BPFLoader

func (*BPFLoader) Done

func (l *BPFLoader) Done() <-chan struct{}

Done 返回完成信号通道

func (*BPFLoader) GetMapCollectionByType

func (l *BPFLoader) GetMapCollectionByType(name string) *ebpf.Map

func (*BPFLoader) GetMapHandlerByType

func (l *BPFLoader) GetMapHandlerByType(mapType ebpf.MapType) MapHandler

GetMapHandlerByType 根据 map 类型返回对应的 MapHandler

func (*BPFLoader) GetMapSpecByType

func (l *BPFLoader) GetMapSpecByType(name string) *ebpf.MapSpec

func (*BPFLoader) Init

func (l *BPFLoader) Init() error

Init 初始化阶段

func (*BPFLoader) Load

func (l *BPFLoader) Load() error

Load 加载阶段

func (*BPFLoader) Metrics

func (l *BPFLoader) Metrics() error

func (*BPFLoader) RegisterMapHandler

func (l *BPFLoader) RegisterMapHandler(handler MapHandler)

RegisterMapHandler 注册 Map 处理器

func (*BPFLoader) Start

func (l *BPFLoader) Start() error

Start 启动阶段

func (*BPFLoader) Stats

func (l *BPFLoader) Stats() error

func (*BPFLoader) Stop

func (l *BPFLoader) Stop() error

Stop 停止阶段

type BaseMapHandler

type BaseMapHandler struct {
	Logger       *zap.Logger
	Config       *Config
	Collection   *ebpf.Collection
	MapSpec      *ebpf.MapSpec
	BTFContainer *container.BTFContainer
	Poller       skeleton.Poller
	Stats        *metrics.Collector
	EventHandler meta.EventHandler
}

BaseMapHandler 提供通用实现

type Config

type Config struct {
	ObjectPath  string
	BTFPath     string
	Logger      *zap.Logger
	PollTimeout time.Duration
	StructName  string
	Properties  meta.Properties
}

Config 配置结构

type Loader

type Loader interface {
	Init() error
	Load() error
	Start() error
	Stop() error
	Stats() error
	Metrics() error
}

Loader 定义加载器接口

type MapHandler

type MapHandler interface {
	Type() ebpf.MapType
	Setup(*ebpf.MapSpec, *ebpf.Map) (*skeleton.ProgramPoller, error)
	SetCollection(*ebpf.Collection)
	SetBTFContainer(*container.BTFContainer)
	Close()
	SetEventHandler(meta.EventHandler)
}

MapHandler 定义 Map 处理器接口

type PerfEventMapHandler

type PerfEventMapHandler struct {
	BaseMapHandler
}

PerfEventMapHandler 实现

func (*PerfEventMapHandler) Close

func (h *PerfEventMapHandler) Close()

func (*PerfEventMapHandler) SetBTFContainer

func (h *PerfEventMapHandler) SetBTFContainer(btfContainer *container.BTFContainer)

func (*PerfEventMapHandler) SetCollection

func (h *PerfEventMapHandler) SetCollection(collection *ebpf.Collection)

func (*PerfEventMapHandler) SetEventHandler

func (h *PerfEventMapHandler) SetEventHandler(handler meta.EventHandler)

func (*PerfEventMapHandler) Setup

func (*PerfEventMapHandler) Type

func (h *PerfEventMapHandler) Type() ebpf.MapType

type RingBufMapHandler

type RingBufMapHandler struct {
	BaseMapHandler
}

RingBufMapHandler 实现

func (*RingBufMapHandler) Close

func (h *RingBufMapHandler) Close()

func (*RingBufMapHandler) SetBTFContainer

func (h *RingBufMapHandler) SetBTFContainer(btfContainer *container.BTFContainer)

func (*RingBufMapHandler) SetCollection

func (h *RingBufMapHandler) SetCollection(collection *ebpf.Collection)

func (*RingBufMapHandler) SetEventHandler

func (h *RingBufMapHandler) SetEventHandler(handler meta.EventHandler)

func (*RingBufMapHandler) Setup

func (*RingBufMapHandler) Type

func (h *RingBufMapHandler) Type() ebpf.MapType

type SampleMapHandler

type SampleMapHandler struct {
	BaseMapHandler
}

func (*SampleMapHandler) Close

func (s *SampleMapHandler) Close()

func (*SampleMapHandler) SetBTFContainer

func (s *SampleMapHandler) SetBTFContainer(btfContainer *container.BTFContainer)

func (*SampleMapHandler) SetCollection

func (s *SampleMapHandler) SetCollection(collection *ebpf.Collection)

func (*SampleMapHandler) SetEventHandler

func (s *SampleMapHandler) SetEventHandler(handler meta.EventHandler)

func (*SampleMapHandler) Setup

func (s *SampleMapHandler) Setup(spec *ebpf.MapSpec, m *ebpf.Map) (*skeleton.ProgramPoller, error)

func (*SampleMapHandler) Type

func (s *SampleMapHandler) Type() ebpf.MapType

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL