From b4eccd408fde876761541bc0704f35fa18357032 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 29 Feb 2024 10:58:32 +0200 Subject: a more generic enter/exit event handler --- internal/event.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 internal/event.go (limited to 'internal/event.go') 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() +} -- cgit v1.2.3