summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-16 21:41:31 +0200
committerPaul Buetow <paul@buetow.org>2024-02-16 21:41:31 +0200
commitec6ad4983ca023842cc5c780a723b753bf55518b (patch)
tree84c7e315696abaf9b098180137038b7bcec66e99
parentfd2875f21834124da576e7284f314f1d087cac31 (diff)
refactor to syncpool
-rw-r--r--internal/ioriotng.go21
-rw-r--r--internal/syncpool/syncpool.go19
-rw-r--r--internal/types/bufferpools.go16
3 files changed, 30 insertions, 26 deletions
diff --git a/internal/ioriotng.go b/internal/ioriotng.go
index 047cf2f..49a44bb 100644
--- a/internal/ioriotng.go
+++ b/internal/ioriotng.go
@@ -10,6 +10,7 @@ import (
"ioriotng/internal/debugfs"
"ioriotng/internal/flags"
+ "ioriotng/internal/syncpool"
"ioriotng/internal/tracepoints"
"ioriotng/internal/types"
@@ -62,35 +63,35 @@ func Run(flags flags.Flags) {
for raw := range ch {
switch types.OpId(raw[0]) {
case types.OPENAT_ENTER_OP_ID:
- ev := readRaw(raw, types.OpenEnterEventPool.Get().(*types.OpenatEnterEvent))
+ ev := readRaw(raw, syncpool.OpenEnterEvent.Get().(*types.OpenatEnterEvent))
enterOpen[ev.Tid] = ev
case types.OPENAT_EXIT_OP_ID:
- ev := readRaw(raw, types.FdEventPool.Get().(*types.FdEvent))
+ ev := readRaw(raw, syncpool.FdEvent.Get().(*types.FdEvent))
enterEv, ok := enterOpen[ev.Tid]
if !ok {
fmt.Println("Dropping", ev)
- types.FdEventPool.Put(ev)
+ syncpool.FdEvent.Put(ev)
continue
}
fmt.Println(enterEv, ev)
delete(enterOpen, ev.Tid)
- types.FdEventPool.Put(ev)
- types.OpenEnterEventPool.Put(enterEv)
+ syncpool.FdEvent.Put(ev)
+ syncpool.OpenEnterEvent.Put(enterEv)
case types.CLOSE_ENTER_OP_ID:
- ev := readRaw(raw, types.FdEventPool.Get().(*types.FdEvent))
+ ev := readRaw(raw, syncpool.FdEvent.Get().(*types.FdEvent))
enterFd[ev.Tid] = ev
case types.CLOSE_EXIT_OP_ID:
- ev := readRaw(raw, types.NullEventPool.Get().(*types.NullEvent))
+ ev := readRaw(raw, syncpool.NullEvent.Get().(*types.NullEvent))
enterEv, ok := enterFd[ev.Tid]
if !ok {
fmt.Println("Dropping", ev)
- types.NullEventPool.Put(ev)
+ syncpool.NullEvent.Put(ev)
continue
}
fmt.Println(enterEv, ev)
delete(enterFd, ev.Tid)
- types.NullEventPool.Put(ev)
- types.FdEventPool.Put(enterEv)
+ syncpool.NullEvent.Put(ev)
+ syncpool.FdEvent.Put(enterEv)
default:
panic(fmt.Sprintf("UNKNOWN Ringbuf data received len:%d raw:%v", len(raw), raw))
}
diff --git a/internal/syncpool/syncpool.go b/internal/syncpool/syncpool.go
new file mode 100644
index 0000000..c41034f
--- /dev/null
+++ b/internal/syncpool/syncpool.go
@@ -0,0 +1,19 @@
+package syncpool
+
+import (
+ "ioriotng/internal/types"
+ "sync"
+)
+
+func syncPool[T any]() sync.Pool {
+ return sync.Pool{
+ New: func() interface{} {
+ var value T
+ return &value
+ },
+ }
+}
+
+var OpenEnterEvent = syncPool[types.OpenatEnterEvent]()
+var FdEvent = syncPool[types.FdEvent]()
+var NullEvent = syncPool[types.NullEvent]()
diff --git a/internal/types/bufferpools.go b/internal/types/bufferpools.go
deleted file mode 100644
index da0779d..0000000
--- a/internal/types/bufferpools.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package types
-
-import "sync"
-
-func syncPool[T any]() sync.Pool {
- return sync.Pool{
- New: func() interface{} {
- var value T
- return &value
- },
- }
-}
-
-var OpenEnterEventPool = syncPool[OpenatEnterEvent]()
-var FdEventPool = syncPool[FdEvent]()
-var NullEventPool = syncPool[NullEvent]()