summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-16 01:46:28 +0200
committerPaul Buetow <paul@buetow.org>2024-02-16 01:46:28 +0200
commit67032cef39a4e7bfb77afb68907322ba04d57bc6 (patch)
tree5814c6b8b76770ed543eef3cbcaeb098d1220b36
parent97384637211bbb70c43abc08389ea05c139d36ae (diff)
pretty print of the op id
-rw-r--r--internal/ioriotng.go9
-rw-r--r--internal/types/types.go23
2 files changed, 25 insertions, 7 deletions
diff --git a/internal/ioriotng.go b/internal/ioriotng.go
index d2535d3..a95892c 100644
--- a/internal/ioriotng.go
+++ b/internal/ioriotng.go
@@ -4,7 +4,6 @@ import "C"
import (
"bytes"
- "context"
"encoding/binary"
"fmt"
"log"
@@ -57,7 +56,9 @@ func Run(flags flags.Flags) {
rb.Poll(300)
for raw := range ch {
- switch raw[0] {
+ switch types.OpId(raw[0]) {
+ // TODO: Actually, need one ring buffer event per enter/exit ... otherwise may be difficult to capture
+ // what belongs to what in event based / multiplexed applications.
case types.OPENAT_ENTER_OP_ID:
var ev types.OpenatEnterEvent
if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, &ev); err != nil {
@@ -71,13 +72,13 @@ func Run(flags flags.Flags) {
if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, &ev); err != nil {
log.Fatal(err)
}
- log.Println(ev)
+ fmt.Println(ev)
case types.CLOSE_EXIT_OP_ID:
var ev types.NullEvent
if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, &ev); err != nil {
log.Fatal(err)
}
- log.Println(ev)
+ fmt.Println(ev)
default:
panic(fmt.Sprintf("UNKNOWN Ringbuf data received len:%d raw:%v", len(raw), raw))
}
diff --git a/internal/types/types.go b/internal/types/types.go
index 336ce5a..99d760e 100644
--- a/internal/types/types.go
+++ b/internal/types/types.go
@@ -5,26 +5,43 @@ import (
"fmt"
)
+type OpId uint32
+
const (
MAX_FILENAME_LENGTH = 256
MAX_PROGNAME_LENGTH = 16
)
const (
- OPENAT_ENTER_OP_ID = iota + 1
+ OPENAT_ENTER_OP_ID OpId = iota + 1
OPENAT_EXIT_OP_ID
CLOSE_ENTER_OP_ID
CLOSE_EXIT_OP_ID
)
+func (id OpId) String() string {
+ switch id {
+ case OPENAT_ENTER_OP_ID:
+ return "openat:enter"
+ case OPENAT_EXIT_OP_ID:
+ return "openat:exit"
+ case CLOSE_ENTER_OP_ID:
+ return "close:enter"
+ case CLOSE_EXIT_OP_ID:
+ return "close:exit"
+ default:
+ panic(fmt.Sprintf("Unknown OpId %d", uint32(id)))
+ }
+}
+
type NullEvent struct {
- OpID uint32
+ OpId OpId
Tid uint32
Time uint64
}
func (ev NullEvent) String() string {
- return fmt.Sprintf("Tid:%v Time:%v", ev.Tid, ev.Time)
+ return fmt.Sprintf("%s Tid:%v Time:%v", ev.OpId, ev.Tid, ev.Time)
}
type FdEvent struct {