summaryrefslogtreecommitdiff
path: root/internal/event.go
diff options
context:
space:
mode:
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()
+}