summaryrefslogtreecommitdiff
path: root/internal/eventloop_runtime.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/eventloop_runtime.go')
-rw-r--r--internal/eventloop_runtime.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/eventloop_runtime.go b/internal/eventloop_runtime.go
index 94648e0..cce7299 100644
--- a/internal/eventloop_runtime.go
+++ b/internal/eventloop_runtime.go
@@ -147,6 +147,7 @@ func (e *eventLoop) initRawHandlers() {
e.registerNamePathHandlers()
e.registerMiscHandlers()
e.registerSocketHandlers()
+ e.registerIPCHandlers()
}
// registerOpenHandlers wires enter/exit handlers for open-family events.
@@ -301,6 +302,37 @@ func (e *eventLoop) registerSocketHandlers() {
}
}
+func (e *eventLoop) registerIPCHandlers() {
+ e.rawHandlers[types.ENTER_PIPE_EVENT] = func(raw []byte, _ chan<- *event.Pair) {
+ pipeEv, ok := decodeRawEvent(e, types.ENTER_PIPE_EVENT, raw, types.NewPipeEventFast)
+ if !ok {
+ return
+ }
+ e.tracepointEntered(pipeEv)
+ }
+ e.rawHandlers[types.EXIT_PIPE_EVENT] = func(raw []byte, ch chan<- *event.Pair) {
+ pipeEv, ok := decodeRawEvent(e, types.EXIT_PIPE_EVENT, raw, types.NewPipeEventFast)
+ if !ok {
+ return
+ }
+ e.tracepointExited(pipeEv, ch)
+ }
+ e.rawHandlers[types.ENTER_EVENTFD_EVENT] = func(raw []byte, _ chan<- *event.Pair) {
+ eventfdEv, ok := decodeRawEvent(e, types.ENTER_EVENTFD_EVENT, raw, types.NewEventfdEventFast)
+ if !ok {
+ return
+ }
+ e.tracepointEntered(eventfdEv)
+ }
+ e.rawHandlers[types.EXIT_EVENTFD_EVENT] = func(raw []byte, ch chan<- *event.Pair) {
+ eventfdEv, ok := decodeRawEvent(e, types.EXIT_EVENTFD_EVENT, raw, types.NewEventfdEventFast)
+ if !ok {
+ return
+ }
+ e.tracepointExited(eventfdEv, ch)
+ }
+}
+
func decodeRawEvent[T any](e *eventLoop, eventType types.EventType, raw []byte, decode func([]byte) *T) (*T, bool) {
decoded := decode(raw)
if decoded == nil {