summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-22 20:38:12 +0200
committerPaul Buetow <paul@buetow.org>2024-02-22 20:38:12 +0200
commiteff5b134c0a4532712ffcbed7701a668ba7c31ff (patch)
tree946f2134a3842479c143c453fa08e8690fb5ac5e /internal
parentf649f89201cf1b8a8a8aab98dba91bbbd96ecd09 (diff)
move readRaw to event constructors
Diffstat (limited to 'internal')
-rw-r--r--internal/eventloop.go18
-rw-r--r--internal/generated/Makefile11
-rw-r--r--internal/generated/nqc.raku9
-rw-r--r--internal/generated/types/types.go29
4 files changed, 40 insertions, 27 deletions
diff --git a/internal/eventloop.go b/internal/eventloop.go
index c482ceb..f3762b0 100644
--- a/internal/eventloop.go
+++ b/internal/eventloop.go
@@ -3,8 +3,6 @@ package internal
import "C"
import (
- "bytes"
- "encoding/binary"
"fmt"
. "ioriotng/internal/generated/types"
@@ -23,13 +21,13 @@ func eventLoop(bpfModule *bpf.Module, ch <-chan []byte) {
case OPENAT_ENTER_OP_ID:
fallthrough
case OPEN_ENTER_OP_ID:
- ev := readRaw(raw, NewOpenEnterEvent())
+ ev := NewOpenEnterEvent(raw)
enterOpen[ev.PidTgid] = ev
case OPENAT_EXIT_OP_ID:
fallthrough
case OPEN_EXIT_OP_ID:
- ev := readRaw(raw, NewFdEvent())
+ ev := NewFdEvent(raw)
enterEv, ok := enterOpen[ev.PidTgid]
if !ok {
fmt.Println("Dropping", ev)
@@ -48,7 +46,7 @@ func eventLoop(bpfModule *bpf.Module, ch <-chan []byte) {
case WRITE_ENTER_OP_ID:
fallthrough
case WRITEV_ENTER_OP_ID:
- ev := readRaw(raw, NewFdEvent())
+ ev := NewFdEvent(raw)
enterFd[ev.PidTgid] = ev
case CLOSE_EXIT_OP_ID:
@@ -56,7 +54,7 @@ func eventLoop(bpfModule *bpf.Module, ch <-chan []byte) {
case WRITE_EXIT_OP_ID:
fallthrough
case WRITEV_EXIT_OP_ID:
- ev := readRaw(raw, NewNullEvent())
+ ev := NewNullEvent(raw)
enterEv, ok := enterFd[ev.PidTgid]
if !ok {
fmt.Println("Dropping", ev)
@@ -77,11 +75,3 @@ func eventLoop(bpfModule *bpf.Module, ch <-chan []byte) {
fmt.Println("Good bye")
}
-
-func readRaw[T any](raw []byte, ev *T) *T {
- if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil {
- fmt.Println(ev, raw, len(raw), err)
- panic(raw)
- }
- return ev
-}
diff --git a/internal/generated/Makefile b/internal/generated/Makefile
index 34ddf01..7734ff5 100644
--- a/internal/generated/Makefile
+++ b/internal/generated/Makefile
@@ -1,11 +1,12 @@
all: generate
-generate: types tracepoints
+generate: tracepoints types
+
+.PHONY: tracepoints
+tracepoints:
+ cat ../c/tracepoints/*.c | raku tracepoints.raku | goimports | gofmt | tee tracepoints/tracepoints.go
.PHONY: types
types:
- cat ../c/types.h | raku nqc.raku | goimports | gofmt > types/types.go
+ cat ../c/types.h | raku nqc.raku | goimports | gofmt | tee types/types.go
-.PHONY: tracepoints
-tracepoints:
- cat ../c/tracepoints/*.c | raku tracepoints.raku | goimports | gofmt > tracepoints/tracepoints.go
diff --git a/internal/generated/nqc.raku b/internal/generated/nqc.raku
index ced6b3c..1c48cba 100644
--- a/internal/generated/nqc.raku
+++ b/internal/generated/nqc.raku
@@ -103,8 +103,13 @@ class NQCToGoActions {
New: func() interface\{\} \{ return &$identifier\{\} \},
\}
- func New{$identifier}() *$identifier \{
- return poolOf{$identifier}s.Get().(*$identifier);
+ func New{$identifier}(raw []byte) *$identifier \{
+ ev := poolOf{$identifier}s.Get().(*$identifier);
+ if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil \{
+ fmt.Println(ev, raw, len(raw), err)
+ panic(raw)
+ \}
+ return ev
\}
func Recycle{$identifier}(elem *$identifier) \{
diff --git a/internal/generated/types/types.go b/internal/generated/types/types.go
index 8211277..9d7fcb8 100644
--- a/internal/generated/types/types.go
+++ b/internal/generated/types/types.go
@@ -2,6 +2,8 @@
package types
import (
+ "bytes"
+ "encoding/binary"
"fmt"
"sync"
)
@@ -62,8 +64,13 @@ var poolOfNullEvents = sync.Pool{
New: func() interface{} { return &NullEvent{} },
}
-func NewNullEvent() *NullEvent {
- return poolOfNullEvents.Get().(*NullEvent)
+func NewNullEvent(raw []byte) *NullEvent {
+ ev := poolOfNullEvents.Get().(*NullEvent)
+ if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil {
+ fmt.Println(ev, raw, len(raw), err)
+ panic(raw)
+ }
+ return ev
}
func RecycleNullEvent(elem *NullEvent) {
@@ -85,8 +92,13 @@ var poolOfFdEvents = sync.Pool{
New: func() interface{} { return &FdEvent{} },
}
-func NewFdEvent() *FdEvent {
- return poolOfFdEvents.Get().(*FdEvent)
+func NewFdEvent(raw []byte) *FdEvent {
+ ev := poolOfFdEvents.Get().(*FdEvent)
+ if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil {
+ fmt.Println(ev, raw, len(raw), err)
+ panic(raw)
+ }
+ return ev
}
func RecycleFdEvent(elem *FdEvent) {
@@ -109,8 +121,13 @@ var poolOfOpenEnterEvents = sync.Pool{
New: func() interface{} { return &OpenEnterEvent{} },
}
-func NewOpenEnterEvent() *OpenEnterEvent {
- return poolOfOpenEnterEvents.Get().(*OpenEnterEvent)
+func NewOpenEnterEvent(raw []byte) *OpenEnterEvent {
+ ev := poolOfOpenEnterEvents.Get().(*OpenEnterEvent)
+ if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil {
+ fmt.Println(ev, raw, len(raw), err)
+ panic(raw)
+ }
+ return ev
}
func RecycleOpenEnterEvent(elem *OpenEnterEvent) {