diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-21 17:55:49 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-21 17:55:49 +0300 |
| commit | 47091d7d25da2bb80ce8ad2209575e098f726075 (patch) | |
| tree | 8d50f931b1eba985d848a3bbc8be8969bf23e9ca /internal/generate | |
| parent | 61f0da12457ffc27b42565e79ac8c2ec9db0e4e7 (diff) | |
l7 classify numa and process memory syscalls
Diffstat (limited to 'internal/generate')
| -rw-r--r-- | internal/generate/classify.go | 24 | ||||
| -rw-r--r-- | internal/generate/classify_test.go | 35 | ||||
| -rw-r--r-- | internal/generate/codegen_test.go | 10 |
3 files changed, 69 insertions, 0 deletions
diff --git a/internal/generate/classify.go b/internal/generate/classify.go index 191b41e..3fa8d23 100644 --- a/internal/generate/classify.go +++ b/internal/generate/classify.go @@ -376,6 +376,30 @@ func classifyNameOnly(name string) (ClassificationResult, bool) { return ClassificationResult{Kind: KindSysVOp}, true case "sys_enter_shmctl": return ClassificationResult{Kind: KindSysVOp}, true + case "sys_enter_pkey_alloc": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_pkey_free": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_mbind": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_set_mempolicy": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_get_mempolicy": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_set_mempolicy_home_node": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_migrate_pages": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_move_pages": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_mlockall": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_munlockall": + return ClassificationResult{Kind: KindNull}, true + case "sys_enter_process_madvise": + return ClassificationResult{Kind: KindFd}, true + case "sys_enter_process_mrelease": + return ClassificationResult{Kind: KindFd}, true case "sys_enter_clone": return ClassificationResult{Kind: KindProc}, true case "sys_enter_clone3": diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go index bbf33d6..07445ec 100644 --- a/internal/generate/classify_test.go +++ b/internal/generate/classify_test.go @@ -745,6 +745,41 @@ func TestClassifyH7NameOnlyKinds(t *testing.T) { } } +func TestClassifyL7NameOnlyKinds(t *testing.T) { + tests := []struct { + name string + want TracepointKind + }{ + {"sys_enter_pkey_alloc", KindNull}, + {"sys_enter_pkey_free", KindNull}, + {"sys_enter_mbind", KindNull}, + {"sys_enter_set_mempolicy", KindNull}, + {"sys_enter_get_mempolicy", KindNull}, + {"sys_enter_set_mempolicy_home_node", KindNull}, + {"sys_enter_migrate_pages", KindNull}, + {"sys_enter_move_pages", KindNull}, + {"sys_enter_mlockall", KindNull}, + {"sys_enter_munlockall", KindNull}, + {"sys_enter_process_madvise", KindFd}, + {"sys_enter_process_mrelease", KindFd}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r := ClassifyFormat(&Format{ + Name: tt.name, + ExternalFields: []Field{ + {Type: "long", Name: "__syscall_nr"}, + {Type: "long", Name: "arg0"}, + }, + }) + if r.Kind != tt.want { + t.Fatalf("%s: got kind %d, want %d", tt.name, r.Kind, tt.want) + } + }) + } +} + func TestClassify67NameOnlyKinds(t *testing.T) { tests := []struct { name string diff --git a/internal/generate/codegen_test.go b/internal/generate/codegen_test.go index 7614ab1..220d77e 100644 --- a/internal/generate/codegen_test.go +++ b/internal/generate/codegen_test.go @@ -33,6 +33,16 @@ func TestGeneratePidfdGetfdHandlerUsesPidfdArgument(t *testing.T) { requireContains(t, output, "ev->fd = (__s32)ctx->args[0];") } +func TestGenerateProcessMadviseHandlerUsesFirstArgumentAsFd(t *testing.T) { + output := GenerateTracepointsC(mustParseAll(t, syntheticPair("process_madvise"))) + + requireContains(t, output, `SEC("tracepoint/syscalls/sys_enter_process_madvise")`) + requireContains(t, output, "struct fd_event *ev") + requireContains(t, output, "ev->event_type = ENTER_FD_EVENT;") + requireContains(t, output, "ev->trace_id = SYS_ENTER_PROCESS_MADVISE;") + requireContains(t, output, "ev->fd = (__s32)ctx->args[0];") +} + func TestGenerateOpenHandler(t *testing.T) { output := generateFromPair(t, FormatOpenat, FormatExitOpenat) |
