summaryrefslogtreecommitdiff
path: root/internal/flags/flags.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-04-10 21:28:45 +0300
committerPaul Buetow <paul@buetow.org>2025-04-10 21:28:45 +0300
commit017494938f061fd1276f2a54b1df0e7002655e9f (patch)
tree9c98fbf31b524233b637079a0482b4255eb6e388 /internal/flags/flags.go
parent9572fa5d087731f68d55517847833f6203b9a70d (diff)
can serialize and deserialize to/from gob
Diffstat (limited to 'internal/flags/flags.go')
-rw-r--r--internal/flags/flags.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go
index 91bceb3..890c18f 100644
--- a/internal/flags/flags.go
+++ b/internal/flags/flags.go
@@ -5,6 +5,7 @@ import (
"fmt"
"os"
"regexp"
+ "slices"
"strings"
"sync"
@@ -14,6 +15,14 @@ import (
var singleton Flags
var once sync.Once
+var validCollapsedFields = []string{
+ "path",
+ "comm",
+ "tracepoint",
+ "pid", "tid",
+ "count",
+}
+
func Get() Flags {
return singleton
}
@@ -34,6 +43,10 @@ type Flags struct {
// Flamegraph flags
FlamegraphEnable bool
FlamegraphName string
+
+ // To convert ior data into collapsed format
+ IorDataFile string
+ CollapsedFields []string
}
func Parse() {
@@ -58,10 +71,26 @@ func parse() {
flag.BoolVar(&singleton.FlamegraphEnable, "flamegraph", false, "Enable flamegraph builder")
flag.StringVar(&singleton.FlamegraphName, "name", "foo", "Name of the flamegraph data output")
+
+ flag.StringVar(&singleton.IorDataFile, "ior", "", "IOR data file to convert into collapsed format")
+ fields := flag.String("fields", "", "Comma separated list of fields to collapse")
flag.Parse()
singleton.TracepointsToAttach = extractTracepointFlags(*tracepointsToAttach)
singleton.TracepointsToExclude = extractTracepointFlags(*tracepointsToExclude)
+
+ if *fields == "" {
+ singleton.CollapsedFields = []string{"path", "tracepoint", "count"}
+ } else {
+ singleton.CollapsedFields = strings.Split(*fields, ",")
+ }
+
+ for _, field := range singleton.CollapsedFields {
+ if !slices.Contains(validCollapsedFields, field) {
+ fmt.Println("Invalid field for collapse:", field)
+ os.Exit(2)
+ }
+ }
}
func extractTracepointFlags(tracepoints string) (regexes []*regexp.Regexp) {