diff options
| -rw-r--r-- | internal/bpfsetup.go | 45 | ||||
| -rw-r--r-- | internal/flags/flags.go | 43 | ||||
| -rw-r--r-- | internal/ior.go | 4 |
3 files changed, 47 insertions, 45 deletions
diff --git a/internal/bpfsetup.go b/internal/bpfsetup.go new file mode 100644 index 0000000..9791930 --- /dev/null +++ b/internal/bpfsetup.go @@ -0,0 +1,45 @@ +package internal + +import ( + "fmt" + "os" + + "ior/internal/flags" + + bpf "github.com/aquasecurity/libbpfgo" +) + +func setBPFGlobals(cfg flags.Flags, bpfModule *bpf.Module) error { + // Ignore `ior` process itself from the filter. + if err := bpfModule.InitGlobalVariable("IOR_PID_FILTER", uint32(os.Getpid())); err != nil { + return fmt.Errorf("unable set IOR_PID_FILTER: %w", err) + } + if err := bpfModule.InitGlobalVariable("PID_FILTER", uint32(cfg.PidFilter)); err != nil { + return fmt.Errorf("unable to set up PID_FILTER global variable: %w", err) + } + if err := bpfModule.InitGlobalVariable("TID_FILTER", uint32(cfg.TidFilter)); err != nil { + return fmt.Errorf("unable to set up TID_FILTER global variable: %w", err) + } + return nil +} + +func resizeBPFMaps(cfg flags.Flags, bpfModule *bpf.Module) error { + if err := resizeBPFMap(bpfModule, "event_map", uint32(cfg.EventMapSize)); err != nil { + return fmt.Errorf("event_map: %w", err) + } + return nil +} + +func resizeBPFMap(module *bpf.Module, name string, size uint32) error { + m, err := module.GetMap(name) + if err != nil { + return err + } + if err = m.SetMaxEntries(size); err != nil { + return err + } + if actual := m.MaxEntries(); actual != size { + return fmt.Errorf("map resize to %d failed, expected %v, actual %v", size, size, actual) + } + return nil +} diff --git a/internal/flags/flags.go b/internal/flags/flags.go index 19f9a63..5197eb4 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -10,8 +10,6 @@ import ( "sync" "sync/atomic" "time" - - bpf "github.com/aquasecurity/libbpfgo" ) var ( @@ -204,44 +202,3 @@ func (flags Flags) ShouldIAttachTracepoint(tracepointName string) bool { return false } - -func (flags Flags) SetBPF(bpfModule *bpf.Module) error { - // Ignore `ior` process itself from the filter - if err := bpfModule.InitGlobalVariable("IOR_PID_FILTER", uint32(os.Getpid())); err != nil { - return fmt.Errorf("unable set IOR_PID_FILTER: %w", err) - } - - if err := bpfModule.InitGlobalVariable("PID_FILTER", uint32(flags.PidFilter)); err != nil { - return fmt.Errorf("unable to set up PID_FILTER global variable: %w", err) - } - - if err := bpfModule.InitGlobalVariable("TID_FILTER", uint32(flags.TidFilter)); err != nil { - return fmt.Errorf("unable to set up TID_FILTER global variable: %w", err) - } - - return nil -} - -func (flags Flags) ResizeBPFMaps(bpfModule *bpf.Module) error { - if err := resizeBPFMap(bpfModule, "event_map", uint32(flags.EventMapSize)); err != nil { - return fmt.Errorf("event_map: %w", err) - } - return nil -} - -func resizeBPFMap(module *bpf.Module, name string, size uint32) error { - m, err := module.GetMap(name) - if err != nil { - return err - } - - if err = m.SetMaxEntries(size); err != nil { - return err - } - - if actual := m.MaxEntries(); actual != size { - return fmt.Errorf("map resize to %d failed, expected %v, actual %v", size, size, actual) - } - - return nil -} diff --git a/internal/ior.go b/internal/ior.go index 0d824cd..c43ad45 100644 --- a/internal/ior.go +++ b/internal/ior.go @@ -254,11 +254,11 @@ func runTraceWithContext(parentCtx context.Context, started chan<- struct{}, con } defer bpfModule.Close() - if err := cfg.ResizeBPFMaps(bpfModule); err != nil { + if err := resizeBPFMaps(cfg, bpfModule); err != nil { return err } - if err := cfg.SetBPF(bpfModule); err != nil { + if err := setBPFGlobals(cfg, bpfModule); err != nil { return err } |
