From b766efdd3547b4f8a0d0374dafb83b6832d6e43e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 21 Feb 2026 13:13:14 +0200 Subject: Track io_uring setup fds in event loop Amp-Thread-ID: https://ampcode.com/threads/T-019c7fd9-5870-77b7-9909-3eb7550d17bb Co-authored-by: Amp --- internal/eventloop.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'internal/eventloop.go') diff --git a/internal/eventloop.go b/internal/eventloop.go index 91af7c9..c5467ec 100644 --- a/internal/eventloop.go +++ b/internal/eventloop.go @@ -345,6 +345,17 @@ func (e *eventLoop) tracepointExited(exitEv event.Event, ch chan<- *event.Pair) } case *NullEvent: + if ep.Is(SYS_ENTER_IO_URING_SETUP) { + retEvent, ok := exitEv.(*types.RetEvent) + if !ok { + panic("expected *types.RetEvent") + } + if fd := int32(retEvent.Ret); fd >= 0 { + fdFile := file.NewFdWithPid(fd, v.Pid) + e.files[fd] = fdFile + ep.File = fdFile + } + } ep.Comm = e.comm(ep.EnterEv.GetTid()) if !e.filter.eventPair(ep) { ep.Recycle() @@ -404,7 +415,7 @@ func (e *eventLoop) tracepointExited(exitEv event.Event, ch chan<- *event.Pair) // TODO: mmap, msync... // TODO: getcwd? // TODO: sync_file_range - // TODO: https://man7.org/linux/man-pages/man2/io_uring_enter.2.html (already captured but without FDs) + // TODO: io_uring_enter/io_uring_register are captured without fd arguments. prevPairTime, _ := e.prevPairTimes[ep.EnterEv.GetTid()] ep.CalculateDurations(prevPairTime) -- cgit v1.2.3