diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-22 22:31:35 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-22 22:31:35 +0200 |
| commit | 4cd2c4e818a1438bf63d1ca05a6cf134f39bc06b (patch) | |
| tree | 40b4ad1ab60a6f50973a66c4e273c91e0d8d265b /internal/generate | |
| parent | 8e52ba5a8661c717f45e00608ad64f0adc6de3e1 (diff) | |
Add copy_file_range support and tracepoint attach tests
Diffstat (limited to 'internal/generate')
| -rw-r--r-- | internal/generate/classify.go | 4 | ||||
| -rw-r--r-- | internal/generate/classify_test.go | 2 | ||||
| -rw-r--r-- | internal/generate/testdata.go | 33 |
3 files changed, 39 insertions, 0 deletions
diff --git a/internal/generate/classify.go b/internal/generate/classify.go index b79d49c..ae03758 100644 --- a/internal/generate/classify.go +++ b/internal/generate/classify.go @@ -142,6 +142,10 @@ func classifyNameAndField(name, fieldType, fieldName string) (ClassificationResu if fieldType == "const char *" && fieldName == "name" { return ClassificationResult{Kind: KindPathname, PathnameField: "name"}, true } + case "sys_enter_copy_file_range": + if isFdType(fieldType) && fieldName == "fd_in" { + return ClassificationResult{Kind: KindFd}, true + } } if strings.HasPrefix(name, "sys_enter") && diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go index 285c8e2..8d6f9c2 100644 --- a/internal/generate/classify_test.go +++ b/internal/generate/classify_test.go @@ -272,6 +272,7 @@ func TestShouldNotIgnore(t *testing.T) { noIgnore := []string{ "sys_enter_read", "sys_enter_write", "sys_enter_openat", "sys_enter_close", "sys_enter_rename", "sys_enter_unlink", + "sys_enter_copy_file_range", "sys_enter_msync", "sys_exit_read", "sys_exit_openat", } @@ -299,6 +300,7 @@ func TestClassifySyscallPairAccepted(t *testing.T) { {"fcntl", FormatFcntl, FormatExitFcntl, KindFcntl}, {"sync", FormatSync, FormatExitSync, KindNull}, {"msync", FormatMsync, FormatExitMsync, KindNull}, + {"copy_file_range", FormatCopyFileRange, FormatExitCopyFileRange, KindFd}, {"syslog", FormatSyslog, FormatExitSyslog, KindNull}, {"open_by_handle_at", FormatOpenByHandleAt, FormatExitOpenByHandleAt, KindOpenByHandleAt}, {"name_to_handle_at", FormatNameToHandleAt, FormatExitNameToHandleAt, KindPathname}, diff --git a/internal/generate/testdata.go b/internal/generate/testdata.go index c03c0d7..76228a3 100644 --- a/internal/generate/testdata.go +++ b/internal/generate/testdata.go @@ -182,6 +182,39 @@ format: print fmt: "0x%lx", REC->ret ` +const FormatCopyFileRange = `name: sys_enter_copy_file_range +ID: 736 +format: + field:unsigned short common_type; offset:0; size:2; signed:0; + field:unsigned char common_flags; offset:2; size:1; signed:0; + field:unsigned char common_preempt_count; offset:3; size:1; signed:0; + field:int common_pid; offset:4; size:4; signed:1; + + field:int __syscall_nr; offset:8; size:4; signed:1; + field:int fd_in; offset:16; size:8; signed:0; + field:loff_t * off_in; offset:24; size:8; signed:0; + field:int fd_out; offset:32; size:8; signed:0; + field:loff_t * off_out; offset:40; size:8; signed:0; + field:size_t len; offset:48; size:8; signed:0; + field:unsigned int flags; offset:56; size:8; signed:0; + +print fmt: "fd_in: 0x%08lx, off_in: 0x%08lx, fd_out: 0x%08lx, off_out: 0x%08lx, len: 0x%08lx, flags: 0x%08lx", ((unsigned long)(REC->fd_in)), ((unsigned long)(REC->off_in)), ((unsigned long)(REC->fd_out)), ((unsigned long)(REC->off_out)), ((unsigned long)(REC->len)), ((unsigned long)(REC->flags)) +` + +const FormatExitCopyFileRange = `name: sys_exit_copy_file_range +ID: 735 +format: + field:unsigned short common_type; offset:0; size:2; signed:0; + field:unsigned char common_flags; offset:2; size:1; signed:0; + field:unsigned char common_preempt_count; offset:3; size:1; signed:0; + field:int common_pid; offset:4; size:4; signed:1; + + field:int __syscall_nr; offset:8; size:4; signed:1; + field:long ret; offset:16; size:8; signed:1; + +print fmt: "0x%lx", REC->ret +` + const FormatRename = `name: sys_enter_rename ID: 870 format: |
