summaryrefslogtreecommitdiff
path: root/internal/event.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-29 10:58:32 +0200
committerPaul Buetow <paul@buetow.org>2024-02-29 10:58:32 +0200
commitb4eccd408fde876761541bc0704f35fa18357032 (patch)
treedbb7d1946fccdd872e81e0492376f398cbd62b74 /internal/event.go
parent34cc66c02fe4592596613361a5ed152fe8f19ae5 (diff)
a more generic enter/exit event handler
Diffstat (limited to 'internal/event.go')
-rw-r--r--internal/event.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/internal/event.go b/internal/event.go
new file mode 100644
index 0000000..7de9307
--- /dev/null
+++ b/internal/event.go
@@ -0,0 +1,41 @@
+package internal
+
+import (
+ "fmt"
+ . "ioriotng/internal/generated/types"
+ "strings"
+)
+
+type event interface {
+ String() string
+ GetSyscallId() SyscallId
+ GetPid() uint32
+ GetTid() uint32
+ GetTime() uint32
+ Recycle()
+}
+
+type enterExitEvent struct {
+ enterEv, exitEv event
+}
+
+func (e enterExitEvent) String() string {
+ var sb strings.Builder
+
+ duration := e.exitEv.GetTime() - e.enterEv.GetTime()
+ sb.WriteString(fmt.Sprintf("%08d µs", duration))
+
+ sb.WriteString(" ")
+ sb.WriteString(e.enterEv.GetSyscallId().Name())
+
+ return sb.String()
+}
+
+func (e enterExitEvent) dump() string {
+ return fmt.Sprintf("%v with enterEv(%v) and exitEv(%v)", e, e.enterEv, e.exitEv)
+}
+
+func (e enterExitEvent) recycle() {
+ e.enterEv.Recycle()
+ e.exitEv.Recycle()
+}