summaryrefslogtreecommitdiff
path: root/internal/eventloop.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-03-07 22:39:05 +0200
committerPaul Buetow <paul@buetow.org>2025-03-07 22:39:05 +0200
commitc78b30591644d4b7ab7b68b7ccba978e4f702bc8 (patch)
treecb2e972d32e3f129070f7780f16a00b8639f3678 /internal/eventloop.go
parentc2f6fe55b1f6e5b3c81040294bae3af520b3f4cd (diff)
more on filters, needs more testing
Diffstat (limited to 'internal/eventloop.go')
-rw-r--r--internal/eventloop.go13
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
}