diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-21 17:51:06 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-21 17:51:06 +0300 |
| commit | 291b5a18c144123c3329b84ef2d0ba64d8db74d3 (patch) | |
| tree | 08b6e63bfeef533b23e3ff70da17da0302eab44e /internal/generate | |
| parent | e06f421493bc1c95e787b0f49dd655863e7baf81 (diff) | |
37 classify clone family as proc kind
Diffstat (limited to 'internal/generate')
| -rw-r--r-- | internal/generate/classify.go | 11 | ||||
| -rw-r--r-- | internal/generate/classify_test.go | 24 | ||||
| -rw-r--r-- | internal/generate/codegen_test.go | 4 | ||||
| -rw-r--r-- | internal/generate/kindregistry.go | 1 |
4 files changed, 39 insertions, 1 deletions
diff --git a/internal/generate/classify.go b/internal/generate/classify.go index 9c37646..3b2fb53 100644 --- a/internal/generate/classify.go +++ b/internal/generate/classify.go @@ -35,6 +35,7 @@ const ( KindModule KindSysVId KindSysVOp + KindProc ) func (k TracepointKind) MetadataName() string { @@ -97,6 +98,8 @@ func (k TracepointKind) MetadataName() string { return "sysv-id" case KindSysVOp: return "sysv-op" + case KindProc: + return "proc" default: return "none" } @@ -362,6 +365,14 @@ func classifyNameOnly(name string) (ClassificationResult, bool) { return ClassificationResult{Kind: KindSysVOp}, true case "sys_enter_shmctl": return ClassificationResult{Kind: KindSysVOp}, true + case "sys_enter_clone": + return ClassificationResult{Kind: KindProc}, true + case "sys_enter_clone3": + return ClassificationResult{Kind: KindProc}, true + case "sys_enter_fork": + return ClassificationResult{Kind: KindProc}, true + case "sys_enter_vfork": + return ClassificationResult{Kind: KindProc}, 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 364de2c..d6d339b 100644 --- a/internal/generate/classify_test.go +++ b/internal/generate/classify_test.go @@ -941,6 +941,30 @@ func TestClassifyB7NameOnlyKinds(t *testing.T) { } } +func TestClassify37NameOnlyKinds(t *testing.T) { + tests := []string{ + "sys_enter_clone", + "sys_enter_clone3", + "sys_enter_fork", + "sys_enter_vfork", + } + + for _, name := range tests { + t.Run(name, func(t *testing.T) { + r := ClassifyFormat(&Format{ + Name: name, + ExternalFields: []Field{ + {Type: "long", Name: "__syscall_nr"}, + {Type: "long", Name: "arg0"}, + }, + }) + if r.Kind != KindProc { + t.Fatalf("%s: got kind %d, want KindProc", name, 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 c431f5c..ffa65d9 100644 --- a/internal/generate/codegen_test.go +++ b/internal/generate/codegen_test.go @@ -586,6 +586,7 @@ func TestGenerateAllEventTypes(t *testing.T) { {KindModule, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"}, {KindSysVId, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"}, {KindSysVOp, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"}, + {KindProc, "ENTER_NULL_EVENT", "EXIT_NULL_EVENT"}, } for _, tt := range tests { @@ -632,6 +633,7 @@ func TestEventStructNames(t *testing.T) { {KindModule, "null_event"}, {KindSysVId, "null_event"}, {KindSysVOp, "null_event"}, + {KindProc, "null_event"}, } for _, tt := range tests { @@ -650,7 +652,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} + 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} 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 8f83e69..8ef0f61 100644 --- a/internal/generate/kindregistry.go +++ b/internal/generate/kindregistry.go @@ -45,6 +45,7 @@ var kindRegistry = map[TracepointKind]kindMeta{ KindModule: {structName: "null_event", enterAccepted: true}, KindSysVId: {structName: "null_event", enterAccepted: true}, KindSysVOp: {structName: "null_event", enterAccepted: true}, + KindProc: {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. |
