summaryrefslogtreecommitdiff
path: root/internal/flags/sampling.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-21 17:58:01 +0300
committerPaul Buetow <paul@buetow.org>2026-05-21 17:58:01 +0300
commit3e00ee8e994147c2dce70bc785fb6fb70f3ecd41 (patch)
tree722485bcdb9227b15fc662fdecd580dfbb8c99c0 /internal/flags/sampling.go
parent47091d7d25da2bb80ce8ad2209575e098f726075 (diff)
j7 add futex kind and aggregate-only defaults
Diffstat (limited to 'internal/flags/sampling.go')
-rw-r--r--internal/flags/sampling.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/internal/flags/sampling.go b/internal/flags/sampling.go
index 19b4f9d..2f63ada 100644
--- a/internal/flags/sampling.go
+++ b/internal/flags/sampling.go
@@ -8,6 +8,14 @@ import (
"ior/internal/types"
)
+var defaultAggregateOnlySyscalls = []string{
+ "futex",
+ "futex_wait",
+ "futex_wake",
+ "futex_requeue",
+ "futex_waitv",
+}
+
func cloneFamilySamplingRates(in map[types.SyscallFamily]uint32) map[types.SyscallFamily]uint32 {
out := make(map[types.SyscallFamily]uint32, len(in))
for family, rate := range in {
@@ -24,6 +32,22 @@ func cloneSyscallSamplingRates(in map[string]uint32) map[string]uint32 {
return out
}
+func defaultSyscallSamplingRates() map[string]uint32 {
+ out := make(map[string]uint32, len(defaultAggregateOnlySyscalls))
+ for _, syscall := range defaultAggregateOnlySyscalls {
+ out[syscall] = 0
+ }
+ return out
+}
+
+func mergeSyscallSamplingRates(overrides map[string]uint32) map[string]uint32 {
+ out := defaultSyscallSamplingRates()
+ for syscall, rate := range overrides {
+ out[syscall] = rate
+ }
+ return out
+}
+
func parseFamilySamplingRates(raw string) (map[types.SyscallFamily]uint32, error) {
entries, err := parseSamplingEntries(raw)
if err != nil {