summaryrefslogtreecommitdiff
path: root/internal/generate
diff options
context:
space:
mode:
Diffstat (limited to 'internal/generate')
-rw-r--r--internal/generate/classify.go11
-rw-r--r--internal/generate/classify_test.go1
2 files changed, 9 insertions, 3 deletions
diff --git a/internal/generate/classify.go b/internal/generate/classify.go
index 7dcbf5a..b7e9c0f 100644
--- a/internal/generate/classify.go
+++ b/internal/generate/classify.go
@@ -241,9 +241,14 @@ var nameOnlyKindsTable = map[string]TracepointKind{
"sys_enter_epoll_ctl": KindEpollCtl,
"sys_enter_move_mount": KindTwoFd,
- "sys_enter_statmount": KindNull,
- "sys_enter_listmount": KindNull,
- "sys_enter_listns": KindNull,
+ // close_range(first, last, flags) needs all three arguments, so it is a
+ // two_fd_event (fd_a=first, fd_b=last, extra=flags) rather than a single-fd
+ // fd_event. This lets the runtime honour the upper bound and the
+ // CLOSE_RANGE_CLOEXEC flag instead of closing every fd >= first.
+ "sys_enter_close_range": KindTwoFd,
+ "sys_enter_statmount": KindNull,
+ "sys_enter_listmount": KindNull,
+ "sys_enter_listns": KindNull,
"sys_enter_poll": KindPoll,
"sys_enter_ppoll": KindPoll,
diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go
index 618274a..46947e2 100644
--- a/internal/generate/classify_test.go
+++ b/internal/generate/classify_test.go
@@ -1401,6 +1401,7 @@ func TestClassifySyscallPairAccepted(t *testing.T) {
{"mount", FormatMount, FormatExitMount, KindPathname},
{"umount", FormatUmount, FormatExitUmount, KindPathname},
{"move_mount", FormatMoveMount, FormatExitMoveMount, KindTwoFd},
+ {"close_range", syntheticEnter("close_range", 9322), syntheticExit("close_range", 9321), KindTwoFd},
{"kcmp", syntheticEnter("kcmp", 9324), syntheticExit("kcmp", 9323), KindTwoFd},
{"kexec_file_load", syntheticEnter("kexec_file_load", 9326), syntheticExit("kexec_file_load", 9325), KindFd},
{"membarrier", syntheticEnter("membarrier", 9328), syntheticExit("membarrier", 9327), KindNull},