summaryrefslogtreecommitdiff
path: root/internal/flags/flags.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-03-29 10:27:47 +0200
committerPaul Buetow <paul@buetow.org>2025-03-29 10:27:47 +0200
commit5f1b3be8ac4013ac7cf5041de339317defeb75ce (patch)
tree3f2df161f6599179c56ca3073cc10ff89a024d1b /internal/flags/flags.go
parent525e38ae59ce7a0d3be49ecba94df678f1def409 (diff)
add tpsExclude, rename tracepoints to tps
Diffstat (limited to 'internal/flags/flags.go')
-rw-r--r--internal/flags/flags.go41
1 files changed, 27 insertions, 14 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go
index 3686617..7a77ae7 100644
--- a/internal/flags/flags.go
+++ b/internal/flags/flags.go
@@ -11,15 +11,16 @@ import (
)
type Flags struct {
- PidFilter int
- TidFilter int
- EventMapSize int
- CommFilter string
- PathFilter string
- PprofEnable bool
- FlamegraphEnable bool
- Duration int
- TracepointsToAttach []*regexp.Regexp
+ PidFilter int
+ TidFilter int
+ EventMapSize int
+ CommFilter string
+ PathFilter string
+ PprofEnable bool
+ FlamegraphEnable bool
+ Duration int
+ TracepointsToAttach []*regexp.Regexp
+ TracepointsToExclude []*regexp.Regexp
}
func New() (flags Flags) {
@@ -34,22 +35,34 @@ func New() (flags Flags) {
flag.BoolVar(&flags.PprofEnable, "pprof", false, "Enable profiling")
flag.BoolVar(&flags.FlamegraphEnable, "flamegraph", false, "Enable flamegraph builder")
- tracepointNames := flag.String("tracepoints", "", "Comma separated list regexes for tracepoints to load")
+ tracepointsToAttach := flag.String("tps", "", "Comma separated list regexes for tracepoints to load")
+ tracepointsToExclude := flag.String("tpsExclude", "", "Comma separated list regexes for tracepoints to exclude")
flag.Parse()
- for _, name := range strings.Split(*tracepointNames, ",") {
+ flags.TracepointsToAttach = extractTracepointFlags(tracepointsToAttach)
+ flags.TracepointsToExclude = extractTracepointFlags(tracepointsToExclude)
+
+ return flags
+}
+
+func extractTracepointFlags(tracepoints *string) (regexes []*regexp.Regexp) {
+ for _, name := range strings.Split(*tracepoints, ",") {
re, err := regexp.Compile(name)
if err != nil {
fmt.Println("Unable to compile regex", name, ": ", err)
os.Exit(2)
}
- flags.TracepointsToAttach = append(flags.TracepointsToAttach, re)
+ regexes = append(regexes, re)
}
-
- return flags
+ return regexes
}
func (flags Flags) AttachTracepoint(tracepointName string) bool {
+ for _, re := range flags.TracepointsToExclude {
+ if re.MatchString(tracepointName) {
+ return false
+ }
+ }
if len(flags.TracepointsToAttach) == 0 {
return true
}