diff options
| author | Paul Buetow <paul@buetow.org> | 2025-03-07 22:39:05 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-03-07 22:39:05 +0200 |
| commit | c78b30591644d4b7ab7b68b7ccba978e4f702bc8 (patch) | |
| tree | cb2e972d32e3f129070f7780f16a00b8639f3678 /internal/eventloop.go | |
| parent | c2f6fe55b1f6e5b3c81040294bae3af520b3f4cd (diff) | |
more on filters, needs more testing
Diffstat (limited to 'internal/eventloop.go')
| -rw-r--r-- | internal/eventloop.go | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/internal/eventloop.go b/internal/eventloop.go index 8569004..4f0f7ca 100644 --- a/internal/eventloop.go +++ b/internal/eventloop.go @@ -5,6 +5,7 @@ import "C" import ( "fmt" "os" + "path/filepath" "ior/internal/flags" . "ior/internal/generated/types" @@ -48,7 +49,6 @@ func (e *eventLoop) run(rawCh <-chan []byte) { fmt.Println("Good bye") } -// Deserialise raw byte stream from BPF ringbuffer. func (e *eventLoop) events(rawCh <-chan []byte) <-chan *eventPair { ch := make(chan *eventPair) @@ -131,7 +131,6 @@ func (e *eventLoop) syscallExit(exitEv event, ch chan<- *eventPair) { e.files[fd] = file } ev.file = file - e.comms[openEv.Tid] = string(openEv.Comm[:]) case *NameEvent: @@ -158,9 +157,16 @@ func (e *eventLoop) syscallExit(exitEv event, ch chan<- *eventPair) { ev.file = newFdFileWithPid(fd, ev.enterEv.(*FdEvent).Pid) } ev.comm = e.comm(ev.enterEv.GetTid()) - + if !e.filter.eventPair(ev) { + ev.recycle() + return + } case *NullEvent: ev.comm = e.comm(ev.enterEv.GetTid()) + if !e.filter.eventPair(ev) { + ev.recycle() + return + } default: panic(fmt.Sprintf("unknown type: %v", v)) @@ -177,6 +183,7 @@ func (e *eventLoop) comm(tid uint32) string { return comm } if linkName, err := os.Readlink(fmt.Sprintf("/proc/%d/exe", tid)); err == nil { + linkName = filepath.Base(linkName) e.comms[tid] = linkName return linkName } |
