summaryrefslogtreecommitdiff
path: root/internal/eventloop_runtime.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-20 14:37:41 +0300
committerPaul Buetow <paul@buetow.org>2026-05-20 14:37:41 +0300
commit96355c79a38032ab4bd880b3b3ff4192ae709795 (patch)
tree7a395706e3db680f6e695c8602501741eed6ad45 /internal/eventloop_runtime.go
parentf063e626a28339735da583142e5af864a60c2111 (diff)
task 27: add KindSleep and requested sleep metric
Diffstat (limited to 'internal/eventloop_runtime.go')
-rw-r--r--internal/eventloop_runtime.go12
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())