diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-20 14:37:41 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-20 14:37:41 +0300 |
| commit | 96355c79a38032ab4bd880b3b3ff4192ae709795 (patch) | |
| tree | 7a395706e3db680f6e695c8602501741eed6ad45 /internal/eventloop_runtime.go | |
| parent | f063e626a28339735da583142e5af864a60c2111 (diff) | |
task 27: add KindSleep and requested sleep metric
Diffstat (limited to 'internal/eventloop_runtime.go')
| -rw-r--r-- | internal/eventloop_runtime.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/internal/eventloop_runtime.go b/internal/eventloop_runtime.go index 697de07..8ef3abf 100644 --- a/internal/eventloop_runtime.go +++ b/internal/eventloop_runtime.go @@ -248,6 +248,7 @@ func (e *eventLoop) initRawHandlers() { e.registerIPCHandlers() e.registerPollingHandlers() e.registerMemoryHandlers() + e.registerSleepHandlers() } // registerOpenHandlers wires enter/exit handlers for open-family events. @@ -460,6 +461,16 @@ func (e *eventLoop) registerMemoryHandlers() { } } +func (e *eventLoop) registerSleepHandlers() { + e.rawHandlers[types.ENTER_SLEEP_EVENT] = func(raw []byte, _ chan<- *event.Pair) { + sleepEv, ok := decodeRawEvent(e, types.ENTER_SLEEP_EVENT, raw, types.NewSleepEventFast) + if !ok { + return + } + e.tracepointEntered(sleepEv) + } +} + func decodeRawEvent[T any](e *eventLoop, eventType types.EventType, raw []byte, decode func([]byte) *T) (*T, bool) { decoded := decode(raw) if decoded == nil { @@ -514,6 +525,7 @@ func (e *eventLoop) tracepointExited(exitEv event.Event, ch chan<- *event.Pair) } applyRetBytes(ep) applyAddressSpaceBytes(ep) + applyRequestedSleepNs(ep) tid := ep.EnterEv.GetTid() ep.CalculateDurations(e.pairs.prevTime(tid)) e.pairs.setPrevTime(tid, ep.ExitEv.GetTime()) |
