summaryrefslogtreecommitdiff
path: root/internal/ior.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-08 20:14:32 +0200
committerPaul Buetow <paul@buetow.org>2026-03-08 20:14:32 +0200
commit4acb116d78588489e79b7e17a79d4609a32fbba7 (patch)
treea43e755c890083fec1fb86169844593cf9a70e13 /internal/ior.go
parent21aa0cd0f96087fa040750643109c496e7a1b3ee (diff)
task 367: carry full trace filters through TUI context
Diffstat (limited to 'internal/ior.go')
-rw-r--r--internal/ior.go37
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)
}