diff options
| author | Paul Buetow <paul@buetow.org> | 2024-02-29 10:58:32 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-02-29 10:58:32 +0200 |
| commit | b4eccd408fde876761541bc0704f35fa18357032 (patch) | |
| tree | dbb7d1946fccdd872e81e0492376f398cbd62b74 /internal/event.go | |
| parent | 34cc66c02fe4592596613361a5ed152fe8f19ae5 (diff) | |
a more generic enter/exit event handler
Diffstat (limited to 'internal/event.go')
| -rw-r--r-- | internal/event.go | 41 |
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() +} |
