diff options
| author | Paul Buetow <paul@buetow.org> | 2025-04-10 21:28:45 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-04-10 21:28:45 +0300 |
| commit | 017494938f061fd1276f2a54b1df0e7002655e9f (patch) | |
| tree | 9c98fbf31b524233b637079a0482b4255eb6e388 /internal/flags/flags.go | |
| parent | 9572fa5d087731f68d55517847833f6203b9a70d (diff) | |
can serialize and deserialize to/from gob
Diffstat (limited to 'internal/flags/flags.go')
| -rw-r--r-- | internal/flags/flags.go | 29 |
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) { |
