diff options
| author | Paul Buetow <paul@buetow.org> | 2025-03-11 09:52:30 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-03-11 09:52:30 +0200 |
| commit | f9d8d2d9a107204fddf13b8f60845e817076d1f8 (patch) | |
| tree | b38437d816f589dc18246290c95124fe25962e5e /internal/event.go | |
| parent | a7f6f047de1e0ae56a0ef3a4c74e86f4f8f6eeb7 (diff) | |
refactor and initial tree
Diffstat (limited to 'internal/event.go')
| -rw-r--r-- | internal/event.go | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/internal/event.go b/internal/event.go deleted file mode 100644 index e638223..0000000 --- a/internal/event.go +++ /dev/null @@ -1,96 +0,0 @@ -package internal - -import ( - "fmt" - . "ior/internal/generated/types" - "strconv" - "strings" - "sync" -) - -var poolOfEventPairs = sync.Pool{ - New: func() interface{} { return &eventPair{} }, -} - -type event interface { - String() string - GetTraceId() TraceId - GetPid() uint32 - GetTid() uint32 - GetTime() uint64 - Recycle() -} - -// Represents a pair of enter and exit events (e.g. entering the syscall + exiting it) -type eventPair struct { - enterEv, exitEv event - file file - comm string - duration uint64 - tracepointMismatch bool - - // To calculate the time difference from the previoud event. - prevPair *eventPair - durationToPrev uint64 -} - -func newEventPair(enterEv event) *eventPair { - e := poolOfEventPairs.Get().(*eventPair) - e.enterEv = enterEv - return e -} - -func (e *eventPair) calculateDurations() { - e.duration = e.exitEv.GetTime() - e.enterEv.GetTime() - - if e.prevPair != nil { - e.durationToPrev = e.enterEv.GetTime() - e.prevPair.exitEv.GetTime() - } -} - -func (e *eventPair) is(id TraceId) bool { - return e.enterEv.GetTraceId() == id -} - -const eventStreamHeader = "durationToPrevNs,durationNs,comm,pid.tid,name,ret,notice,file" - -func (e *eventPair) String() string { - var sb strings.Builder - - sb.WriteString(fmt.Sprintf("%08d,%08d", e.durationToPrev, e.duration)) - - sb.WriteString(",") - sb.WriteString(e.comm) - - sb.WriteString(",") - sb.WriteString(strconv.FormatInt(int64(e.enterEv.GetPid()), 10)) - sb.WriteString(".") - sb.WriteString(strconv.FormatInt(int64(e.enterEv.GetTid()), 10)) - - sb.WriteString(",") - sb.WriteString(e.enterEv.GetTraceId().Name()) - - sb.WriteString(",") - if retEv, ok := e.exitEv.(*RetEvent); ok { - sb.WriteString(strconv.FormatInt(int64(retEv.Ret), 10)) - } - - sb.WriteString(",") - sb.WriteString(e.file.String()) - - if e.tracepointMismatch { - sb.WriteString(",MISMATCH") - } - return sb.String() -} - -func (e *eventPair) dump() string { - return fmt.Sprintf("%v with enterEv(%v) and exitEv(%v)", e, e.enterEv, e.exitEv) -} - -func (e *eventPair) recycle() { - e.enterEv.Recycle() - e.exitEv.Recycle() - e.prevPair = nil - poolOfEventPairs.Put(e) -} |
