diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-21 13:13:14 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-21 13:13:14 +0200 |
| commit | b766efdd3547b4f8a0d0374dafb83b6832d6e43e (patch) | |
| tree | 4b797d3e26a551007b07c334759545afb9d240bb /internal/eventloop.go | |
| parent | 6d53aeb16bee34eeee14b457cd0e7b0811bee873 (diff) | |
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 <amp@ampcode.com>
Diffstat (limited to 'internal/eventloop.go')
| -rw-r--r-- | internal/eventloop.go | 13 |
1 files changed, 12 insertions, 1 deletions
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) |
