diff options
| author | Paul Buetow <paul@buetow.org> | 2024-02-16 21:41:31 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-02-16 21:41:31 +0200 |
| commit | ec6ad4983ca023842cc5c780a723b753bf55518b (patch) | |
| tree | 84c7e315696abaf9b098180137038b7bcec66e99 /internal | |
| parent | fd2875f21834124da576e7284f314f1d087cac31 (diff) | |
refactor to syncpool
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/ioriotng.go | 21 | ||||
| -rw-r--r-- | internal/syncpool/syncpool.go | 19 | ||||
| -rw-r--r-- | internal/types/bufferpools.go | 16 |
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]() |
