summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/c/generated_tracepoints.c2
-rw-r--r--internal/c/generated_tracepoints_result.txt2
-rw-r--r--internal/generate/classify.go5
-rw-r--r--internal/generate/classify_test.go15
-rw-r--r--internal/generate/codegen_test.go4
-rw-r--r--internal/generate/kindregistry.go1
-rw-r--r--internal/tracepoints/dimension_selector_test.go15
-rw-r--r--internal/tracepoints/generated_tracepoints.go2
8 files changed, 42 insertions, 4 deletions
diff --git a/internal/c/generated_tracepoints.c b/internal/c/generated_tracepoints.c
index d5caceb..4385d16 100644
--- a/internal/c/generated_tracepoints.c
+++ b/internal/c/generated_tracepoints.c
@@ -13289,7 +13289,7 @@ int handle_sys_exit_perf_event_open(struct syscall_trace_exit *ctx) {
return 0;
}
-/// sys_enter_bpf is a struct null_event (kind=null)
+/// sys_enter_bpf is a struct null_event (kind=bpf)
SEC("tracepoint/syscalls/sys_enter_bpf")
int handle_sys_enter_bpf(struct syscall_trace_enter *ctx) {
__u32 pid, tid;
diff --git a/internal/c/generated_tracepoints_result.txt b/internal/c/generated_tracepoints_result.txt
index dfdf987..1db0ddf 100644
--- a/internal/c/generated_tracepoints_result.txt
+++ b/internal/c/generated_tracepoints_result.txt
@@ -7,7 +7,7 @@ sys_enter_adjtimex is a struct null_event (kind=null)
sys_enter_alarm is a struct null_event (kind=null)
sys_enter_arch_prctl is a struct null_event (kind=null)
sys_enter_bind is a struct fd_event (kind=fd)
-sys_enter_bpf is a struct null_event (kind=null)
+sys_enter_bpf is a struct null_event (kind=bpf)
sys_enter_brk is a struct null_event (kind=null)
sys_enter_cachestat is a struct fd_event (kind=fd)
sys_enter_capget is a struct null_event (kind=null)
diff --git a/internal/generate/classify.go b/internal/generate/classify.go
index 3b2fb53..ff1bf72 100644
--- a/internal/generate/classify.go
+++ b/internal/generate/classify.go
@@ -36,6 +36,7 @@ const (
KindSysVId
KindSysVOp
KindProc
+ KindBpf
)
func (k TracepointKind) MetadataName() string {
@@ -100,6 +101,8 @@ func (k TracepointKind) MetadataName() string {
return "sysv-op"
case KindProc:
return "proc"
+ case KindBpf:
+ return "bpf"
default:
return "none"
}
@@ -373,6 +376,8 @@ func classifyNameOnly(name string) (ClassificationResult, bool) {
return ClassificationResult{Kind: KindProc}, true
case "sys_enter_vfork":
return ClassificationResult{Kind: KindProc}, true
+ case "sys_enter_bpf":
+ return ClassificationResult{Kind: KindBpf}, true
case "sys_enter_pidfd_send_signal":
return ClassificationResult{Kind: KindFd}, true
case "sys_enter_kexec_file_load":
diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go
index d6d339b..8e77cd4 100644
--- a/internal/generate/classify_test.go
+++ b/internal/generate/classify_test.go
@@ -965,6 +965,21 @@ func TestClassify37NameOnlyKinds(t *testing.T) {
}
}
+func TestClassify57NameOnlyKinds(t *testing.T) {
+ r := ClassifyFormat(&Format{
+ Name: "sys_enter_bpf",
+ ExternalFields: []Field{
+ {Type: "long", Name: "__syscall_nr"},
+ {Type: "int", Name: "cmd"},
+ {Type: "union bpf_attr *", Name: "attr"},
+ {Type: "unsigned int", Name: "size"},
+ },
+ })
+ if r.Kind != KindBpf {
+ t.Fatalf("sys_enter_bpf: got kind %d, want KindBpf", r.Kind)
+ }
+}
+
func TestClassifyAcctPathname(t *testing.T) {
r := ClassifyFormat(&Format{
Name: "sys_enter_acct",
diff --git a/internal/generate/codegen_test.go b/internal/generate/codegen_test.go
index ffa65d9..d61e0c9 100644
--- a/internal/generate/codegen_test.go
+++ b/internal/generate/codegen_test.go
@@ -587,6 +587,7 @@ func TestGenerateAllEventTypes(t *testing.T) {
{KindSysVId, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"},
{KindSysVOp, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"},
{KindProc, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"},
+ {KindBpf, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"},
}
for _, tt := range tests {
@@ -634,6 +635,7 @@ func TestEventStructNames(t *testing.T) {
{KindSysVId, "null_event"},
{KindSysVOp, "null_event"},
{KindProc, "null_event"},
+ {KindBpf, "null_event"},
}
for _, tt := range tests {
@@ -652,7 +654,7 @@ func TestEnterReject(t *testing.T) {
t.Error("KindNone should be enter-rejected")
}
- accepted := []TracepointKind{KindFd, KindOpen, KindMqOpen, KindExec, KindPathname, KindName, KindFcntl, KindNull, KindDup3, KindOpenByHandleAt, KindSocket, KindSocketpair, KindAccept, KindPipe, KindEventfd, KindPidfd, KindEpollCtl, KindTwoFd, KindPoll, KindMem, KindSleep, KindKeyctl, KindPtrace, KindPerfOpen, KindSeccomp, KindModule, KindSysVId, KindSysVOp, KindProc}
+ accepted := []TracepointKind{KindFd, KindOpen, KindMqOpen, KindExec, KindPathname, KindName, KindFcntl, KindNull, KindDup3, KindOpenByHandleAt, KindSocket, KindSocketpair, KindAccept, KindPipe, KindEventfd, KindPidfd, KindEpollCtl, KindTwoFd, KindPoll, KindMem, KindSleep, KindKeyctl, KindPtrace, KindPerfOpen, KindSeccomp, KindModule, KindSysVId, KindSysVOp, KindProc, KindBpf}
for _, k := range accepted {
if isEnterRejected(k) {
t.Errorf("kind %d should NOT be enter-rejected", k)
diff --git a/internal/generate/kindregistry.go b/internal/generate/kindregistry.go
index 8ef0f61..f78bf6f 100644
--- a/internal/generate/kindregistry.go
+++ b/internal/generate/kindregistry.go
@@ -46,6 +46,7 @@ var kindRegistry = map[TracepointKind]kindMeta{
KindSysVId: {structName: "null_event", enterAccepted: true},
KindSysVOp: {structName: "null_event", enterAccepted: true},
KindProc: {structName: "null_event", enterAccepted: true},
+ KindBpf: {structName: "null_event", enterAccepted: true},
// KindNone is intentionally absent: it represents "unclassified" and is
// never enter-accepted. lookupKind returns the zero kindMeta (enterAccepted=false)
// for any unregistered kind, so KindNone is implicitly rejected.
diff --git a/internal/tracepoints/dimension_selector_test.go b/internal/tracepoints/dimension_selector_test.go
index 439a153..81a49e5 100644
--- a/internal/tracepoints/dimension_selector_test.go
+++ b/internal/tracepoints/dimension_selector_test.go
@@ -138,6 +138,21 @@ func TestParseSelectorWithDimensionsProcKindOnly(t *testing.T) {
}
}
+func TestParseSelectorWithDimensionsBpfKindOnly(t *testing.T) {
+ sel, err := ParseSelectorWithDimensions("", "", DimensionSelectorConfig{
+ TraceKinds: "bpf",
+ })
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if !sel.ShouldAttach("sys_enter_bpf") {
+ t.Fatal("expected bpf to be attached for bpf kind")
+ }
+ if sel.ShouldAttach("sys_enter_openat") {
+ t.Fatal("expected openat to be excluded when only bpf kind is enabled")
+ }
+}
+
func TestParseSelectorWithDimensionsSyscallOnly(t *testing.T) {
sel, err := ParseSelectorWithDimensions("", "", DimensionSelectorConfig{
TraceSyscalls: "openat",
diff --git a/internal/tracepoints/generated_tracepoints.go b/internal/tracepoints/generated_tracepoints.go
index cf9296f..146b068 100644
--- a/internal/tracepoints/generated_tracepoints.go
+++ b/internal/tracepoints/generated_tracepoints.go
@@ -1118,7 +1118,7 @@ var syscallKinds = map[string]string{
"alarm": "null",
"arch_prctl": "null",
"bind": "fd",
- "bpf": "null",
+ "bpf": "bpf",
"brk": "null",
"cachestat": "fd",
"capget": "null",