diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-01 23:46:58 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-01 23:46:58 +0200 |
| commit | 225cc311074f35e09aa3e70407d4e9f009f435a1 (patch) | |
| tree | e51387362cb26f7afdabd87a4953594006b9cb67 /internal/bpfsetup.go | |
| parent | 5775246cb9c2ccfb3469addf6f5fe9a8fc198171 (diff) | |
Move BPF setup off flags.Flags
Diffstat (limited to 'internal/bpfsetup.go')
| -rw-r--r-- | internal/bpfsetup.go | 45 |
1 files changed, 45 insertions, 0 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 +} |
