diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-08 20:14:32 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-08 20:14:32 +0200 |
| commit | 4acb116d78588489e79b7e17a79d4609a32fbba7 (patch) | |
| tree | a43e755c890083fec1fb86169844593cf9a70e13 /internal/ior.go | |
| parent | 21aa0cd0f96087fa040750643109c496e7a1b3ee (diff) | |
task 367: carry full trace filters through TUI context
Diffstat (limited to 'internal/ior.go')
| -rw-r--r-- | internal/ior.go | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/internal/ior.go b/internal/ior.go index 7836ef2..ea06baa 100644 --- a/internal/ior.go +++ b/internal/ior.go @@ -18,6 +18,7 @@ import ( "ior/internal/event" "ior/internal/flags" "ior/internal/flamegraph" + "ior/internal/globalfilter" "ior/internal/probemanager" "ior/internal/statsengine" "ior/internal/tracepoints" @@ -174,9 +175,9 @@ func tuiTraceStarterFromRunTrace( }) cfg := baseCfg - if pidFilter, tidFilter, ok := tui.TraceFiltersFromContext(ctx); ok { - cfg.PidFilter = pidFilter - cfg.TidFilter = tidFilter + if filter, ok := tui.TraceFiltersFromContext(ctx); ok { + cfg.GlobalFilter = filter.Clone() + applyTraceFilterConfig(&cfg, filter) } engine := statsengine.NewEngine(64) streamBuf := eventstream.NewRingBuffer() @@ -229,6 +230,36 @@ func tuiTraceStarterFromRunTrace( } } +func applyTraceFilterConfig(cfg *flags.Config, filter globalfilter.Filter) { + if cfg == nil { + return + } + cfg.CommFilter = "" + cfg.PathFilter = "" + cfg.PidFilter = -1 + cfg.TidFilter = -1 + + if filter.Comm != nil { + cfg.CommFilter = filter.Comm.Pattern + } + if filter.File != nil { + cfg.PathFilter = filter.File.Pattern + } + if pid, ok := eqFilterValue(filter.PID); ok { + cfg.PidFilter = pid + } + if tid, ok := eqFilterValue(filter.TID); ok { + cfg.TidFilter = tid + } +} + +func eqFilterValue(filter *globalfilter.NumericFilter) (int, bool) { + if filter == nil || filter.Op != globalfilter.OpEq || filter.Value <= 0 { + return 0, false + } + return int(filter.Value), true +} + func runTrace(cfg flags.Config) error { return runTraceWithContext(context.Background(), cfg, nil, nil) } |
