summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-21 13:59:39 +0200
committerPaul Buetow <paul@buetow.org>2026-02-21 13:59:39 +0200
commitb5792f8e23d1599dcce49bc83e5d128abee484f3 (patch)
treeef07039e4e05b23a6b41adf6b663abd0109a436b
parent114f0cb9e6e5487fccaafb7d7065b611c8c14402 (diff)
Enable name_to_handle_at and io_uring fd attribution
Amp-Thread-ID: https://ampcode.com/threads/T-019c7fec-eec9-706a-8338-3ce674802680 Co-authored-by: Amp <amp@ampcode.com>
-rw-r--r--internal/c/generated_tracepoints.c63
-rw-r--r--internal/c/generated_tracepoints_result.txt7
-rw-r--r--internal/eventloop.go7
-rw-r--r--internal/eventloop_test.go92
-rw-r--r--internal/flags/flags.go7
-rw-r--r--internal/generate/classify.go10
-rw-r--r--internal/generate/classify_test.go25
-rw-r--r--internal/generate/codegen_test.go30
-rw-r--r--internal/generate/testdata.go101
-rw-r--r--internal/tracepoints/generated_tracepoints.go2
-rw-r--r--internal/types/generated_types.go6
-rw-r--r--internal/types/name_to_handle_at.go16
12 files changed, 307 insertions, 59 deletions
diff --git a/internal/c/generated_tracepoints.c b/internal/c/generated_tracepoints.c
index 941e271..562a5b9 100644
--- a/internal/c/generated_tracepoints.c
+++ b/internal/c/generated_tracepoints.c
@@ -125,7 +125,6 @@
/// Ignoring sys_enter_munlockall sys_exit_munlockall as possibly not file I/O related
/// Ignoring sys_enter_munlock sys_exit_munlock as possibly not file I/O related
/// Ignoring sys_enter_munmap sys_exit_munmap as possibly not file I/O related
-/// Ignoring sys_enter_name_to_handle_at sys_exit_name_to_handle_at as possibly not file I/O related
/// Ignoring sys_enter_nanosleep sys_exit_nanosleep as possibly not file I/O related
/// Ignoring sys_enter_newuname sys_exit_newuname as possibly not file I/O related
/// Ignoring sys_enter_pause sys_exit_pause as possibly not file I/O related
@@ -263,6 +262,8 @@
#define SYS_EXIT_IO_URING_SETUP 1493
#define SYS_ENTER_QUOTACTL_FD 1151
#define SYS_EXIT_QUOTACTL_FD 1150
+#define SYS_ENTER_NAME_TO_HANDLE_AT 1135
+#define SYS_EXIT_NAME_TO_HANDLE_AT 1134
#define SYS_ENTER_OPEN_BY_HANDLE_AT 1133
#define SYS_EXIT_OPEN_BY_HANDLE_AT 1132
#define SYS_ENTER_FLOCK 1119
@@ -480,22 +481,23 @@
#define SYS_ENTER_MMAP 100
#define SYS_EXIT_MMAP 99
-/// sys_enter_io_uring_register is a struct null_event
+/// sys_enter_io_uring_register is a struct fd_event
SEC("tracepoint/syscalls/sys_enter_io_uring_register")
int handle_sys_enter_io_uring_register(struct trace_event_raw_sys_enter *ctx) {
__u32 pid, tid;
if (filter(&pid, &tid))
return 0;
- struct null_event *ev = bpf_ringbuf_reserve(&event_map, sizeof(struct null_event), 0);
+ struct fd_event *ev = bpf_ringbuf_reserve(&event_map, sizeof(struct fd_event), 0);
if (!ev)
return 0;
- ev->event_type = ENTER_NULL_EVENT;
+ ev->event_type = ENTER_FD_EVENT;
ev->trace_id = SYS_ENTER_IO_URING_REGISTER;
ev->pid = pid;
ev->tid = tid;
ev->time = bpf_ktime_get_boot_ns();
+ ev->fd = (__s32)ctx->args[0];
bpf_ringbuf_submit(ev, 0);
return 0;
@@ -524,22 +526,23 @@ int handle_sys_exit_io_uring_register(struct trace_event_raw_sys_exit *ctx) {
return 0;
}
-/// sys_enter_io_uring_enter is a struct null_event
+/// sys_enter_io_uring_enter is a struct fd_event
SEC("tracepoint/syscalls/sys_enter_io_uring_enter")
int handle_sys_enter_io_uring_enter(struct trace_event_raw_sys_enter *ctx) {
__u32 pid, tid;
if (filter(&pid, &tid))
return 0;
- struct null_event *ev = bpf_ringbuf_reserve(&event_map, sizeof(struct null_event), 0);
+ struct fd_event *ev = bpf_ringbuf_reserve(&event_map, sizeof(struct fd_event), 0);
if (!ev)
return 0;
- ev->event_type = ENTER_NULL_EVENT;
+ ev->event_type = ENTER_FD_EVENT;
ev->trace_id = SYS_ENTER_IO_URING_ENTER;
ev->pid = pid;
ev->tid = tid;
ev->time = bpf_ktime_get_boot_ns();
+ ev->fd = (__s32)ctx->args[0];
bpf_ringbuf_submit(ev, 0);
return 0;
@@ -657,6 +660,52 @@ int handle_sys_exit_quotactl_fd(struct trace_event_raw_sys_exit *ctx) {
return 0;
}
+/// sys_enter_name_to_handle_at is a struct path_event
+SEC("tracepoint/syscalls/sys_enter_name_to_handle_at")
+int handle_sys_enter_name_to_handle_at(struct trace_event_raw_sys_enter *ctx) {
+ __u32 pid, tid;
+ if (filter(&pid, &tid))
+ return 0;
+
+ struct path_event *ev = bpf_ringbuf_reserve(&event_map, sizeof(struct path_event), 0);
+ if (!ev)
+ return 0;
+
+ ev->event_type = ENTER_PATH_EVENT;
+ ev->trace_id = SYS_ENTER_NAME_TO_HANDLE_AT;
+ ev->pid = pid;
+ ev->tid = tid;
+ ev->time = bpf_ktime_get_boot_ns();
+ __builtin_memset(&(ev->pathname), 0, sizeof(ev->pathname));
+ bpf_probe_read_user_str(ev->pathname, sizeof(ev->pathname), (void*)ctx->args[1]);
+
+ bpf_ringbuf_submit(ev, 0);
+ return 0;
+}
+
+/// sys_exit_name_to_handle_at is a struct ret_event (UNCLASSIFIED)
+SEC("tracepoint/syscalls/sys_exit_name_to_handle_at")
+int handle_sys_exit_name_to_handle_at(struct trace_event_raw_sys_exit *ctx) {
+ __u32 pid, tid;
+ if (filter(&pid, &tid))
+ return 0;
+
+ struct ret_event *ev = bpf_ringbuf_reserve(&event_map, sizeof(struct ret_event), 0);
+ if (!ev)
+ return 0;
+
+ ev->event_type = EXIT_RET_EVENT;
+ ev->trace_id = SYS_EXIT_NAME_TO_HANDLE_AT;
+ ev->pid = pid;
+ ev->tid = tid;
+ ev->time = bpf_ktime_get_boot_ns();
+ ev->ret = ctx->ret;
+ ev->ret_type = UNCLASSIFIED;
+
+ bpf_ringbuf_submit(ev, 0);
+ return 0;
+}
+
/// sys_enter_open_by_handle_at is a struct open_by_handle_at_event
SEC("tracepoint/syscalls/sys_enter_open_by_handle_at")
int handle_sys_enter_open_by_handle_at(struct trace_event_raw_sys_enter *ctx) {
diff --git a/internal/c/generated_tracepoints_result.txt b/internal/c/generated_tracepoints_result.txt
index fb3867c..fc722c1 100644
--- a/internal/c/generated_tracepoints_result.txt
+++ b/internal/c/generated_tracepoints_result.txt
@@ -123,7 +123,6 @@ Ignoring sys_enter_msync sys_exit_msync as possibly not file I/O related
Ignoring sys_enter_munlock sys_exit_munlock as possibly not file I/O related
Ignoring sys_enter_munlockall sys_exit_munlockall as possibly not file I/O related
Ignoring sys_enter_munmap sys_exit_munmap as possibly not file I/O related
-Ignoring sys_enter_name_to_handle_at sys_exit_name_to_handle_at as possibly not file I/O related
Ignoring sys_enter_nanosleep sys_exit_nanosleep as possibly not file I/O related
Ignoring sys_enter_newuname sys_exit_newuname as possibly not file I/O related
Ignoring sys_enter_pause sys_exit_pause as possibly not file I/O related
@@ -301,8 +300,8 @@ sys_enter_io_getevents is a struct null_event
sys_enter_io_pgetevents is a struct null_event
sys_enter_io_setup is a struct null_event
sys_enter_io_submit is a struct null_event
-sys_enter_io_uring_enter is a struct null_event
-sys_enter_io_uring_register is a struct null_event
+sys_enter_io_uring_enter is a struct fd_event
+sys_enter_io_uring_register is a struct fd_event
sys_enter_io_uring_setup is a struct null_event
sys_enter_ioctl is a struct fd_event
sys_enter_lchown is a struct path_event
@@ -319,6 +318,7 @@ sys_enter_mkdir is a struct path_event
sys_enter_mkdirat is a struct path_event
sys_enter_mmap is a struct fd_event
sys_enter_mount_setattr is a struct path_event
+sys_enter_name_to_handle_at is a struct path_event
sys_enter_newfstat is a struct fd_event
sys_enter_newfstatat is a struct path_event
sys_enter_newlstat is a struct path_event
@@ -431,6 +431,7 @@ sys_exit_mkdir is a struct ret_event (UNCLASSIFIED)
sys_exit_mkdirat is a struct ret_event (UNCLASSIFIED)
sys_exit_mmap is a struct ret_event (UNCLASSIFIED)
sys_exit_mount_setattr is a struct ret_event (UNCLASSIFIED)
+sys_exit_name_to_handle_at is a struct ret_event (UNCLASSIFIED)
sys_exit_newfstat is a struct ret_event (UNCLASSIFIED)
sys_exit_newfstatat is a struct ret_event (UNCLASSIFIED)
sys_exit_newlstat is a struct ret_event (UNCLASSIFIED)
diff --git a/internal/eventloop.go b/internal/eventloop.go
index c5467ec..8d5a8b0 100644
--- a/internal/eventloop.go
+++ b/internal/eventloop.go
@@ -232,6 +232,11 @@ func (e *eventLoop) tracepointExited(exitEv event.Event, ch chan<- *event.Pair)
case *PathEvent:
if ep.EnterEv.GetTraceId().Name() == sysEnterNameToHandleAtName {
+ retEv, ok := ep.ExitEv.(*types.RetEvent)
+ if !ok || retEv.Ret < 0 {
+ ep.Recycle()
+ return
+ }
pathEv := ep.EnterEv.(*PathEvent)
pathname := types.StringValue(pathEv.Pathname[:])
e.pendingHandles[ep.EnterEv.GetTid()] = pathname
@@ -411,11 +416,9 @@ func (e *eventLoop) tracepointExited(exitEv event.Event, ch chan<- *event.Pair)
}
// TODO: implement copy_file_range
// TODO: open_by_handle_at
- // TODO: name_to_handle_at
// TODO: mmap, msync...
// TODO: getcwd?
// TODO: sync_file_range
- // TODO: io_uring_enter/io_uring_register are captured without fd arguments.
prevPairTime, _ := e.prevPairTimes[ep.EnterEv.GetTid()]
ep.CalculateDurations(prevPairTime)
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go
index f53e6f3..3b9cb9a 100644
--- a/internal/eventloop_test.go
+++ b/internal/eventloop_test.go
@@ -51,6 +51,8 @@ func TestEventloop(t *testing.T) {
"SyncEventTest": makeSyncEventTestData(t),
"IoUringSetupEventTest": makeIoUringSetupEventTestData(t),
"IoUringSetupFailureTest": makeIoUringSetupFailureTestData(t),
+ "IoUringEnterEventTest": makeIoUringEnterEventTestData(t),
+ "IoUringRegisterEventTest": makeIoUringRegisterEventTestData(t),
// Dup3Event tests
"Dup3EventTest": makeDup3EventTestData(t),
"Dup3WithCloexecTest": makeDup3WithCloexecTestData(t),
@@ -62,6 +64,7 @@ func TestEventloop(t *testing.T) {
"FcntlErrorTest": makeFcntlErrorTestData(t),
"FcntlInvalidFdTest": makeFcntlInvalidFdTestData(t),
"NameToHandleAtTest": makeNameToHandleAtTestData(t),
+ "NameToHandleAtFailureTest": makeNameToHandleAtFailureTestData(t),
// FD Lifecycle tests
"FdLifecycleTest": makeFdLifecycleTestData(t),
"FdDupTest": makeFdDupTestData(t),
@@ -939,6 +942,58 @@ func makeIoUringSetupFailureTestData(t *testing.T) (td testData) {
return td
}
+func makeIoUringEnterEventTestData(t *testing.T) (td testData) {
+ fd := int32(52)
+ enterEv, enterEvBytes := makeEnterFdEvent(t, defaulTime, defaultPid, defaultTid, fd, types.SYS_ENTER_IO_URING_ENTER)
+ td.rawTracepoints = append(td.rawTracepoints, enterEvBytes)
+
+ exitEv, exitEvBytes := makeExitRetEvent(t, defaulTime+100, defaultPid, defaultTid, types.SYS_EXIT_IO_URING_ENTER, 0)
+ td.rawTracepoints = append(td.rawTracepoints, exitEvBytes)
+
+ td.validates = append(td.validates, func(t *testing.T, el *eventLoop, ep *event.Pair) {
+ if !enterEv.Equals(ep.EnterEv) {
+ t.Errorf("Expected '%v' but got '%v'", enterEv, ep.EnterEv)
+ }
+ if !exitEv.Equals(ep.ExitEv) {
+ t.Errorf("Expected '%v' but got '%v'", exitEv, ep.ExitEv)
+ }
+ if ep.File == nil {
+ t.Errorf("Expected io_uring_enter to have a file")
+ }
+ if _, ok := el.files[fd]; ok {
+ t.Errorf("Expected io_uring_enter to not track fd %d", fd)
+ }
+ })
+
+ return td
+}
+
+func makeIoUringRegisterEventTestData(t *testing.T) (td testData) {
+ fd := int32(53)
+ enterEv, enterEvBytes := makeEnterFdEvent(t, defaulTime, defaultPid, defaultTid, fd, types.SYS_ENTER_IO_URING_REGISTER)
+ td.rawTracepoints = append(td.rawTracepoints, enterEvBytes)
+
+ exitEv, exitEvBytes := makeExitRetEvent(t, defaulTime+100, defaultPid, defaultTid, types.SYS_EXIT_IO_URING_REGISTER, 0)
+ td.rawTracepoints = append(td.rawTracepoints, exitEvBytes)
+
+ td.validates = append(td.validates, func(t *testing.T, el *eventLoop, ep *event.Pair) {
+ if !enterEv.Equals(ep.EnterEv) {
+ t.Errorf("Expected '%v' but got '%v'", enterEv, ep.EnterEv)
+ }
+ if !exitEv.Equals(ep.ExitEv) {
+ t.Errorf("Expected '%v' but got '%v'", exitEv, ep.ExitEv)
+ }
+ if ep.File == nil {
+ t.Errorf("Expected io_uring_register to have a file")
+ }
+ if _, ok := el.files[fd]; ok {
+ t.Errorf("Expected io_uring_register to not track fd %d", fd)
+ }
+ })
+
+ return td
+}
+
// Test data functions for Dup3Event syscalls
func makeDup3EventTestData(t *testing.T) (td testData) {
oldFd := int32(49)
@@ -1772,6 +1827,43 @@ func makeNameToHandleAtTestData(t *testing.T) (td testData) {
return td
}
+func makeNameToHandleAtFailureTestData(t *testing.T) (td testData) {
+ pathname := "/tmp/handle_failure.txt"
+
+ _, enterNameBytes := makeEnterPathEvent(t, defaulTime, defaultPid, defaultTid, pathname, types.SYS_ENTER_NAME_TO_HANDLE_AT)
+ td.rawTracepoints = append(td.rawTracepoints, enterNameBytes)
+
+ _, exitNameBytes := makeExitRetEvent(t, defaulTime+100, defaultPid, defaultTid, types.SYS_EXIT_NAME_TO_HANDLE_AT, -1)
+ td.rawTracepoints = append(td.rawTracepoints, exitNameBytes)
+
+ fd := int32(71)
+ _, enterOpenBytes := makeEnterOpenByHandleAtEvent(t, defaulTime+200, defaultPid, defaultTid, syscall.O_RDWR)
+ td.rawTracepoints = append(td.rawTracepoints, enterOpenBytes)
+
+ exitOpenEv, exitOpenBytes := makeExitRetEvent(t, defaulTime+300, defaultPid, defaultTid, types.SYS_EXIT_OPEN_BY_HANDLE_AT, int64(fd))
+ td.rawTracepoints = append(td.rawTracepoints, exitOpenBytes)
+
+ td.validates = append(td.validates, func(t *testing.T, el *eventLoop, ep *event.Pair) {
+ if ep.EnterEv.GetTraceId() != types.SYS_ENTER_OPEN_BY_HANDLE_AT {
+ t.Errorf("Expected enter event to be SYS_ENTER_OPEN_BY_HANDLE_AT, but got %v", ep.EnterEv.GetTraceId())
+ }
+ if !exitOpenEv.Equals(ep.ExitEv) {
+ t.Errorf("Expected exit event '%v' but got '%v'", exitOpenEv, ep.ExitEv)
+ }
+ if ep.File == nil {
+ t.Errorf("Expected file to be set")
+ } else if ep.File.Name() == pathname {
+ t.Errorf("Expected open_by_handle_at to not use failed name_to_handle_at path")
+ }
+
+ if _, ok := el.pendingHandles[defaultTid]; ok {
+ t.Errorf("Expected no pending handle for tid %d after failure", defaultTid)
+ }
+ })
+
+ return td
+}
+
// Test open→read→write→close lifecycle
func makeFdLifecycleTestData(t *testing.T) (td testData) {
fd := int32(42)
diff --git a/internal/flags/flags.go b/internal/flags/flags.go
index addd717..eb2d045 100644
--- a/internal/flags/flags.go
+++ b/internal/flags/flags.go
@@ -111,12 +111,7 @@ func parse() {
// disabledTracepoints is a list of tracepoints that should not be attached due to wider isses.
// Here, the BPF programs wouldn't load otherwise due to CO-RE issues.
// TODO: Try out once in a while whether it works again with newer kernel versions.
- // Add back "._open_by_handle_at" here if the tracepoint causes CO-RE issues.
- furtherExcludes := []string{".*_name_to_handle_at"}
- for _, exclude := range furtherExcludes {
- fmt.Println("WARNING: Hard-excluding ", exclude)
- singleton.TracepointsToExclude = append(singleton.TracepointsToExclude, regexp.MustCompile(exclude))
- }
+ // Add back "._open_by_handle_at" or ".*_name_to_handle_at" here if tracepoints cause CO-RE issues.
if *fields == "" {
singleton.CollapsedFields = []string{"pid", "path", "tracepoint"}
diff --git a/internal/generate/classify.go b/internal/generate/classify.go
index 75a12fe..c55e46f 100644
--- a/internal/generate/classify.go
+++ b/internal/generate/classify.go
@@ -28,7 +28,7 @@ const (
type ClassificationResult struct {
Kind TracepointKind
- PathnameField string // for KindPathname: "pathname", "path", or "filename"
+ PathnameField string // for KindPathname: "pathname", "path", "filename", or "name"
}
// ClassifyFormat determines the tracepoint kind for a parsed format section.
@@ -103,6 +103,10 @@ func classifyNameOnly(name string) (ClassificationResult, bool) {
switch name {
case "sys_enter_open_by_handle_at":
return ClassificationResult{Kind: KindOpenByHandleAt}, true
+ case "sys_enter_io_uring_enter":
+ return ClassificationResult{Kind: KindFd}, true
+ case "sys_enter_io_uring_register":
+ return ClassificationResult{Kind: KindFd}, true
case "sys_enter_fcntl":
return ClassificationResult{Kind: KindFcntl}, true
case "sys_enter_syslog":
@@ -132,6 +136,10 @@ func classifyNameAndField(name, fieldType, fieldName string) (ClassificationResu
if fieldType == "unsigned int" && fieldName == "oldfd" {
return ClassificationResult{Kind: KindDup3}, true
}
+ case "sys_enter_name_to_handle_at":
+ if fieldType == "const char *" && fieldName == "name" {
+ return ClassificationResult{Kind: KindPathname, PathnameField: "name"}, true
+ }
}
if strings.HasPrefix(name, "sys_enter") &&
diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go
index c94e359..950e056 100644
--- a/internal/generate/classify_test.go
+++ b/internal/generate/classify_test.go
@@ -136,6 +136,16 @@ func TestClassifyOpenByHandleAt(t *testing.T) {
}
}
+func TestClassifyNameToHandleAt(t *testing.T) {
+ r := classifyFromData(t, FormatNameToHandleAt)
+ if r.Kind != KindPathname {
+ t.Errorf("name_to_handle_at: got kind %d, want KindPathname", r.Kind)
+ }
+ if r.PathnameField != "name" {
+ t.Errorf("name_to_handle_at: PathnameField = %q, want name", r.PathnameField)
+ }
+}
+
func TestClassifyNullSync(t *testing.T) {
r := classifyFromData(t, FormatSync)
if r.Kind != KindNull {
@@ -152,8 +162,15 @@ func TestClassifyNullSyslog(t *testing.T) {
func TestClassifyNullIoUring(t *testing.T) {
r := classifyFromData(t, FormatIoUringEnter)
- if r.Kind != KindNull {
- t.Errorf("io_uring_enter: got kind %d, want KindNull", r.Kind)
+ if r.Kind != KindFd {
+ t.Errorf("io_uring_enter: got kind %d, want KindFd", r.Kind)
+ }
+}
+
+func TestClassifyIoUringRegister(t *testing.T) {
+ r := classifyFromData(t, FormatIoUringRegister)
+ if r.Kind != KindFd {
+ t.Errorf("io_uring_register: got kind %d, want KindFd", r.Kind)
}
}
@@ -282,7 +299,9 @@ func TestClassifySyscallPairAccepted(t *testing.T) {
{"sync", FormatSync, FormatExitSync, KindNull},
{"syslog", FormatSyslog, FormatExitSyslog, KindNull},
{"open_by_handle_at", FormatOpenByHandleAt, FormatExitOpenByHandleAt, KindOpenByHandleAt},
- {"io_uring_enter", FormatIoUringEnter, FormatExitIoUringEnter, KindNull},
+ {"name_to_handle_at", FormatNameToHandleAt, FormatExitNameToHandleAt, KindPathname},
+ {"io_uring_enter", FormatIoUringEnter, FormatExitIoUringEnter, KindFd},
+ {"io_uring_register", FormatIoUringRegister, FormatExitIoUringRegister, KindFd},
{"pread64", FormatPread64, FormatExitPread64, KindFd},
{"symlink", FormatSymlink, FormatExitSymlink, KindName},
}
diff --git a/internal/generate/codegen_test.go b/internal/generate/codegen_test.go
index b19a824..23ab7c1 100644
--- a/internal/generate/codegen_test.go
+++ b/internal/generate/codegen_test.go
@@ -129,6 +129,26 @@ func TestGenerateNullHandler(t *testing.T) {
}
}
+func TestGenerateIoUringEnterHandler(t *testing.T) {
+ output := generateFromPair(t, FormatIoUringEnter, FormatExitIoUringEnter)
+
+ requireContains(t, output, `SEC("tracepoint/syscalls/sys_enter_io_uring_enter")`)
+ requireContains(t, output, "struct fd_event *ev")
+ requireContains(t, output, "ev->event_type = ENTER_FD_EVENT;")
+ requireContains(t, output, "ev->trace_id = SYS_ENTER_IO_URING_ENTER;")
+ requireContains(t, output, "ev->fd = (__s32)ctx->args[0];")
+}
+
+func TestGenerateIoUringRegisterHandler(t *testing.T) {
+ output := generateFromPair(t, FormatIoUringRegister, FormatExitIoUringRegister)
+
+ requireContains(t, output, `SEC("tracepoint/syscalls/sys_enter_io_uring_register")`)
+ requireContains(t, output, "struct fd_event *ev")
+ requireContains(t, output, "ev->event_type = ENTER_FD_EVENT;")
+ requireContains(t, output, "ev->trace_id = SYS_ENTER_IO_URING_REGISTER;")
+ requireContains(t, output, "ev->fd = (__s32)ctx->args[0];")
+}
+
func TestGenerateDup3Handler(t *testing.T) {
output := generateFromPair(t, FormatDup3, FormatExitDup3)
@@ -146,6 +166,16 @@ func TestGenerateOpenByHandleAtHandler(t *testing.T) {
requireContains(t, output, "ev->flags = (__s32)ctx->args[2];")
}
+func TestGenerateNameToHandleAtHandler(t *testing.T) {
+ output := generateFromPair(t, FormatNameToHandleAt, FormatExitNameToHandleAt)
+
+ requireContains(t, output, `SEC("tracepoint/syscalls/sys_enter_name_to_handle_at")`)
+ requireContains(t, output, "struct path_event *ev")
+ requireContains(t, output, "ev->event_type = ENTER_PATH_EVENT;")
+ requireContains(t, output, "ev->trace_id = SYS_ENTER_NAME_TO_HANDLE_AT;")
+ requireContains(t, output, "bpf_probe_read_user_str(ev->pathname, sizeof(ev->pathname), (void*)ctx->args[1]);")
+}
+
func TestGenerateIgnoredComment(t *testing.T) {
output := generateFromPair(t, FormatKill, FormatExitKill)
diff --git a/internal/generate/testdata.go b/internal/generate/testdata.go
index 7ca29cd..e36a6a1 100644
--- a/internal/generate/testdata.go
+++ b/internal/generate/testdata.go
@@ -362,10 +362,10 @@ print fmt: "0x%lx", REC->ret
const FormatOpenByHandleAt = `name: sys_enter_open_by_handle_at
ID: 1133
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: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 mountdirfd; offset:16; size:8; signed:0;
@@ -375,13 +375,31 @@ format:
print fmt: "mountdirfd: 0x%08lx, handle: 0x%08lx, flags: 0x%08lx", ((unsigned long)(REC->mountdirfd)), ((unsigned long)(REC->handle)), ((unsigned long)(REC->flags))
`
+const FormatNameToHandleAt = `name: sys_enter_name_to_handle_at
+ID: 1135
+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 dfd; offset:16; size:8; signed:0;
+ field:const char * name; offset:24; size:8; signed:0;
+ field:struct file_handle * handle; offset:32; size:8; signed:0;
+ field:void * mnt_id; offset:40; size:8; signed:0;
+ field:int flag; offset:48; size:8; signed:0;
+
+print fmt: "dfd: 0x%08lx, name: 0x%08lx, handle: 0x%08lx, mnt_id: 0x%08lx, flag: 0x%08lx", ((unsigned long)(REC->dfd)), ((unsigned long)(REC->name)), ((unsigned long)(REC->handle)), ((unsigned long)(REC->mnt_id)), ((unsigned long)(REC->flag))
+`
+
const FormatExitOpenByHandleAt = `name: sys_exit_open_by_handle_at
ID: 1132
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: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;
@@ -389,25 +407,70 @@ format:
print fmt: "0x%lx", REC->ret
`
+const FormatExitNameToHandleAt = `name: sys_exit_name_to_handle_at
+ID: 1134
+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 FormatIoUringEnter = `name: sys_enter_io_uring_enter
ID: 1496
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: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:unsigned int fd; offset:16; size:8; signed:0;
- field:u32 to_submit; offset:24; size:8; signed:0;
- field:u32 min_complete; offset:32; size:8; signed:0;
- field:u32 flags; offset:40; size:8; signed:0;
- field:const void * argp; offset:48; size:8; signed:0;
- field:size_t argsz; offset:56; size:8; signed:0;
+ field:int __syscall_nr; offset:8; size:4; signed:1;
+ field:unsigned int fd; offset:16; size:8; signed:0;
+ field:u32 to_submit; offset:24; size:8; signed:0;
+ field:u32 min_complete; offset:32; size:8; signed:0;
+ field:u32 flags; offset:40; size:8; signed:0;
+ field:const void * argp; offset:48; size:8; signed:0;
+ field:size_t argsz; offset:56; size:8; signed:0;
print fmt: "fd: 0x%08lx, to_submit: 0x%08lx, min_complete: 0x%08lx, flags: 0x%08lx, argp: 0x%08lx, argsz: 0x%08lx", ((unsigned long)(REC->fd)), ((unsigned long)(REC->to_submit)), ((unsigned long)(REC->min_complete)), ((unsigned long)(REC->flags)), ((unsigned long)(REC->argp)), ((unsigned long)(REC->argsz))
`
+const FormatIoUringRegister = `name: sys_enter_io_uring_register
+ID: 1515
+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:unsigned int fd; offset:16; size:8; signed:0;
+ field:unsigned int opcode; offset:24; size:8; signed:0;
+ field:void * arg; offset:32; size:8; signed:0;
+ field:unsigned int nr_args; offset:40; size:8; signed:0;
+
+print fmt: "fd: 0x%08lx, opcode: 0x%08lx, arg: 0x%08lx, nr_args: 0x%08lx", ((unsigned long)(REC->fd)), ((unsigned long)(REC->opcode)), ((unsigned long)(REC->arg)), ((unsigned long)(REC->nr_args))
+`
+
+const FormatExitIoUringRegister = `name: sys_exit_io_uring_register
+ID: 1514
+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 FormatExitIoUringEnter = `name: sys_exit_io_uring_enter
ID: 1495
format:
diff --git a/internal/tracepoints/generated_tracepoints.go b/internal/tracepoints/generated_tracepoints.go
index d65357e..04ce104 100644
--- a/internal/tracepoints/generated_tracepoints.go
+++ b/internal/tracepoints/generated_tracepoints.go
@@ -10,6 +10,8 @@ var List = []string{
"sys_exit_io_uring_setup",
"sys_enter_quotactl_fd",
"sys_exit_quotactl_fd",
+ "sys_enter_name_to_handle_at",
+ "sys_exit_name_to_handle_at",
"sys_enter_open_by_handle_at",
"sys_exit_open_by_handle_at",
"sys_enter_flock",
diff --git a/internal/types/generated_types.go b/internal/types/generated_types.go
index 44088f6..5a7b912 100644
--- a/internal/types/generated_types.go
+++ b/internal/types/generated_types.go
@@ -12,11 +12,11 @@ type EventType uint32
type TraceId uint32
var traceId2String = map[TraceId]string{
- 1515: "enter_io_uring_register", 1514: "exit_io_uring_register", 1496: "enter_io_uring_enter", 1495: "exit_io_uring_enter", 1494: "enter_io_uring_setup", 1493: "exit_io_uring_setup", 1151: "enter_quotactl_fd", 1150: "exit_quotactl_fd", 1133: "enter_open_by_handle_at", 1132: "exit_open_by_handle_at", 1119: "enter_flock", 1118: "exit_flock", 1105: "enter_io_setup", 1104: "exit_io_setup", 1103: "enter_io_destroy", 1102: "exit_io_destroy", 1101: "enter_io_submit", 1100: "exit_io_submit", 1099: "enter_io_cancel", 1098: "exit_io_cancel", 1097: "enter_io_getevents", 1096: "exit_io_getevents", 1095: "enter_io_pgetevents", 1094: "exit_io_pgetevents", 1063: "enter_fanotify_mark", 1062: "exit_fanotify_mark", 1053: "enter_file_getattr", 1052: "exit_file_getattr", 1051: "enter_file_setattr", 1050: "exit_file_setattr", 1047: "enter_fspick", 1046: "exit_fspick", 1045: "enter_fsconfig", 1044: "exit_fsconfig", 1043: "enter_statfs", 1042: "exit_statfs", 1041: "enter_fstatfs", 1040: "exit_fstatfs", 1035: "enter_utimensat", 1034: "exit_utimensat", 1033: "enter_futimesat", 1032: "exit_futimesat", 1027: "enter_sync", 1026: "exit_sync", 1025: "enter_syncfs", 1024: "exit_syncfs", 1023: "enter_fsync", 1022: "exit_fsync", 1021: "enter_fdatasync", 1020: "exit_fdatasync", 1019: "enter_sync_file_range", 1018: "exit_sync_file_range", 1017: "enter_vmsplice", 1016: "exit_vmsplice", 978: "enter_setxattrat", 977: "exit_setxattrat", 976: "enter_setxattr", 975: "exit_setxattr", 974: "enter_lsetxattr", 973: "exit_lsetxattr", 972: "enter_fsetxattr", 971: "exit_fsetxattr", 970: "enter_getxattrat", 969: "exit_getxattrat", 968: "enter_getxattr", 967: "exit_getxattr", 966: "enter_lgetxattr", 965: "exit_lgetxattr", 964: "enter_fgetxattr", 963: "exit_fgetxattr", 962: "enter_listxattrat", 961: "exit_listxattrat", 960: "enter_listxattr", 959: "exit_listxattr", 958: "enter_llistxattr", 957: "exit_llistxattr", 956: "enter_flistxattr", 955: "exit_flistxattr", 954: "enter_removexattrat", 953: "exit_removexattrat", 952: "enter_removexattr", 951: "exit_removexattr", 950: "enter_lremovexattr", 949: "exit_lremovexattr", 948: "enter_fremovexattr", 947: "exit_fremovexattr", 944: "enter_open_tree", 943: "exit_open_tree", 934: "enter_mount_setattr", 933: "exit_mount_setattr", 932: "enter_open_tree_attr", 931: "exit_open_tree_attr", 924: "enter_close_range", 923: "exit_close_range", 922: "enter_dup3", 921: "exit_dup3", 920: "enter_dup2", 919: "exit_dup2", 918: "enter_dup", 917: "exit_dup", 904: "enter_getdents", 903: "exit_getdents", 902: "enter_getdents64", 901: "exit_getdents64", 900: "enter_ioctl", 899: "exit_ioctl", 898: "enter_fcntl", 897: "exit_fcntl", 892: "enter_mkdirat", 891: "exit_mkdirat", 890: "enter_mkdir", 889: "exit_mkdir", 888: "enter_rmdir", 887: "exit_rmdir", 886: "enter_unlinkat", 885: "exit_unlinkat", 884: "enter_unlink", 883: "exit_unlink", 882: "enter_symlinkat", 881: "exit_symlinkat", 880: "enter_symlink", 879: "exit_symlink", 878: "enter_linkat", 877: "exit_linkat", 876: "enter_link", 875: "exit_link", 874: "enter_renameat2", 873: "exit_renameat2", 872: "enter_renameat", 871: "exit_renameat", 870: "enter_rename", 869: "exit_rename", 860: "enter_newstat", 859: "exit_newstat", 858: "enter_newlstat", 857: "exit_newlstat", 856: "enter_newfstatat", 855: "exit_newfstatat", 854: "enter_newfstat", 853: "exit_newfstat", 852: "enter_readlinkat", 851: "exit_readlinkat", 850: "enter_readlink", 849: "exit_readlink", 848: "enter_statx", 847: "exit_statx", 846: "enter_lseek", 845: "exit_lseek", 844: "enter_read", 843: "exit_read", 842: "enter_write", 841: "exit_write", 840: "enter_pread64", 839: "exit_pread64", 838: "enter_pwrite64", 837: "exit_pwrite64", 836: "enter_readv", 835: "exit_readv", 834: "enter_writev", 833: "exit_writev", 832: "enter_preadv", 831: "exit_preadv", 830: "enter_preadv2", 829: "exit_preadv2", 828: "enter_pwritev", 827: "exit_pwritev", 826: "enter_pwritev2", 825: "exit_pwritev2", 820: "enter_truncate", 819: "exit_truncate", 818: "enter_ftruncate", 817: "exit_ftruncate", 816: "enter_fallocate", 815: "exit_fallocate", 814: "enter_faccessat", 813: "exit_faccessat", 812: "enter_faccessat2", 811: "exit_faccessat2", 810: "enter_access", 809: "exit_access", 808: "enter_chdir", 807: "exit_chdir", 806: "enter_fchdir", 805: "exit_fchdir", 804: "enter_chroot", 803: "exit_chroot", 802: "enter_fchmod", 801: "exit_fchmod", 800: "enter_fchmodat2", 799: "exit_fchmodat2", 798: "enter_fchmodat", 797: "exit_fchmodat", 796: "enter_chmod", 795: "exit_chmod", 794: "enter_fchownat", 793: "exit_fchownat", 792: "enter_chown", 791: "exit_chown", 790: "enter_lchown", 789: "exit_lchown", 788: "enter_fchown", 787: "exit_fchown", 786: "enter_open", 785: "exit_open", 784: "enter_openat", 783: "exit_openat", 782: "enter_openat2", 781: "exit_openat2", 780: "enter_creat", 779: "exit_creat", 778: "enter_close", 777: "exit_close", 613: "enter_readahead", 612: "exit_readahead", 611: "enter_fadvise64", 610: "exit_fadvise64", 592: "enter_cachestat", 591: "exit_cachestat", 403: "enter_finit_module", 402: "exit_finit_module", 347: "enter_syslog", 346: "exit_syslog", 100: "enter_mmap", 99: "exit_mmap",
+ 1515: "enter_io_uring_register", 1514: "exit_io_uring_register", 1496: "enter_io_uring_enter", 1495: "exit_io_uring_enter", 1494: "enter_io_uring_setup", 1493: "exit_io_uring_setup", 1151: "enter_quotactl_fd", 1150: "exit_quotactl_fd", 1135: "enter_name_to_handle_at", 1134: "exit_name_to_handle_at", 1133: "enter_open_by_handle_at", 1132: "exit_open_by_handle_at", 1119: "enter_flock", 1118: "exit_flock", 1105: "enter_io_setup", 1104: "exit_io_setup", 1103: "enter_io_destroy", 1102: "exit_io_destroy", 1101: "enter_io_submit", 1100: "exit_io_submit", 1099: "enter_io_cancel", 1098: "exit_io_cancel", 1097: "enter_io_getevents", 1096: "exit_io_getevents", 1095: "enter_io_pgetevents", 1094: "exit_io_pgetevents", 1063: "enter_fanotify_mark", 1062: "exit_fanotify_mark", 1053: "enter_file_getattr", 1052: "exit_file_getattr", 1051: "enter_file_setattr", 1050: "exit_file_setattr", 1047: "enter_fspick", 1046: "exit_fspick", 1045: "enter_fsconfig", 1044: "exit_fsconfig", 1043: "enter_statfs", 1042: "exit_statfs", 1041: "enter_fstatfs", 1040: "exit_fstatfs", 1035: "enter_utimensat", 1034: "exit_utimensat", 1033: "enter_futimesat", 1032: "exit_futimesat", 1027: "enter_sync", 1026: "exit_sync", 1025: "enter_syncfs", 1024: "exit_syncfs", 1023: "enter_fsync", 1022: "exit_fsync", 1021: "enter_fdatasync", 1020: "exit_fdatasync", 1019: "enter_sync_file_range", 1018: "exit_sync_file_range", 1017: "enter_vmsplice", 1016: "exit_vmsplice", 978: "enter_setxattrat", 977: "exit_setxattrat", 976: "enter_setxattr", 975: "exit_setxattr", 974: "enter_lsetxattr", 973: "exit_lsetxattr", 972: "enter_fsetxattr", 971: "exit_fsetxattr", 970: "enter_getxattrat", 969: "exit_getxattrat", 968: "enter_getxattr", 967: "exit_getxattr", 966: "enter_lgetxattr", 965: "exit_lgetxattr", 964: "enter_fgetxattr", 963: "exit_fgetxattr", 962: "enter_listxattrat", 961: "exit_listxattrat", 960: "enter_listxattr", 959: "exit_listxattr", 958: "enter_llistxattr", 957: "exit_llistxattr", 956: "enter_flistxattr", 955: "exit_flistxattr", 954: "enter_removexattrat", 953: "exit_removexattrat", 952: "enter_removexattr", 951: "exit_removexattr", 950: "enter_lremovexattr", 949: "exit_lremovexattr", 948: "enter_fremovexattr", 947: "exit_fremovexattr", 944: "enter_open_tree", 943: "exit_open_tree", 934: "enter_mount_setattr", 933: "exit_mount_setattr", 932: "enter_open_tree_attr", 931: "exit_open_tree_attr", 924: "enter_close_range", 923: "exit_close_range", 922: "enter_dup3", 921: "exit_dup3", 920: "enter_dup2", 919: "exit_dup2", 918: "enter_dup", 917: "exit_dup", 904: "enter_getdents", 903: "exit_getdents", 902: "enter_getdents64", 901: "exit_getdents64", 900: "enter_ioctl", 899: "exit_ioctl", 898: "enter_fcntl", 897: "exit_fcntl", 892: "enter_mkdirat", 891: "exit_mkdirat", 890: "enter_mkdir", 889: "exit_mkdir", 888: "enter_rmdir", 887: "exit_rmdir", 886: "enter_unlinkat", 885: "exit_unlinkat", 884: "enter_unlink", 883: "exit_unlink", 882: "enter_symlinkat", 881: "exit_symlinkat", 880: "enter_symlink", 879: "exit_symlink", 878: "enter_linkat", 877: "exit_linkat", 876: "enter_link", 875: "exit_link", 874: "enter_renameat2", 873: "exit_renameat2", 872: "enter_renameat", 871: "exit_renameat", 870: "enter_rename", 869: "exit_rename", 860: "enter_newstat", 859: "exit_newstat", 858: "enter_newlstat", 857: "exit_newlstat", 856: "enter_newfstatat", 855: "exit_newfstatat", 854: "enter_newfstat", 853: "exit_newfstat", 852: "enter_readlinkat", 851: "exit_readlinkat", 850: "enter_readlink", 849: "exit_readlink", 848: "enter_statx", 847: "exit_statx", 846: "enter_lseek", 845: "exit_lseek", 844: "enter_read", 843: "exit_read", 842: "enter_write", 841: "exit_write", 840: "enter_pread64", 839: "exit_pread64", 838: "enter_pwrite64", 837: "exit_pwrite64", 836: "enter_readv", 835: "exit_readv", 834: "enter_writev", 833: "exit_writev", 832: "enter_preadv", 831: "exit_preadv", 830: "enter_preadv2", 829: "exit_preadv2", 828: "enter_pwritev", 827: "exit_pwritev", 826: "enter_pwritev2", 825: "exit_pwritev2", 820: "enter_truncate", 819: "exit_truncate", 818: "enter_ftruncate", 817: "exit_ftruncate", 816: "enter_fallocate", 815: "exit_fallocate", 814: "enter_faccessat", 813: "exit_faccessat", 812: "enter_faccessat2", 811: "exit_faccessat2", 810: "enter_access", 809: "exit_access", 808: "enter_chdir", 807: "exit_chdir", 806: "enter_fchdir", 805: "exit_fchdir", 804: "enter_chroot", 803: "exit_chroot", 802: "enter_fchmod", 801: "exit_fchmod", 800: "enter_fchmodat2", 799: "exit_fchmodat2", 798: "enter_fchmodat", 797: "exit_fchmodat", 796: "enter_chmod", 795: "exit_chmod", 794: "enter_fchownat", 793: "exit_fchownat", 792: "enter_chown", 791: "exit_chown", 790: "enter_lchown", 789: "exit_lchown", 788: "enter_fchown", 787: "exit_fchown", 786: "enter_open", 785: "exit_open", 784: "enter_openat", 783: "exit_openat", 782: "enter_openat2", 781: "exit_openat2", 780: "enter_creat", 779: "exit_creat", 778: "enter_close", 777: "exit_close", 613: "enter_readahead", 612: "exit_readahead", 611: "enter_fadvise64", 610: "exit_fadvise64", 592: "enter_cachestat", 591: "exit_cachestat", 403: "enter_finit_module", 402: "exit_finit_module", 347: "enter_syslog", 346: "exit_syslog", 100: "enter_mmap", 99: "exit_mmap",
}
var traceId2Name = map[TraceId]string{
- 1515: "io_uring_register", 1514: "io_uring_register", 1496: "io_uring_enter", 1495: "io_uring_enter", 1494: "io_uring_setup", 1493: "io_uring_setup", 1151: "quotactl_fd", 1150: "quotactl_fd", 1133: "open_by_handle_at", 1132: "open_by_handle_at", 1119: "flock", 1118: "flock", 1105: "io_setup", 1104: "io_setup", 1103: "io_destroy", 1102: "io_destroy", 1101: "io_submit", 1100: "io_submit", 1099: "io_cancel", 1098: "io_cancel", 1097: "io_getevents", 1096: "io_getevents", 1095: "io_pgetevents", 1094: "io_pgetevents", 1063: "fanotify_mark", 1062: "fanotify_mark", 1053: "file_getattr", 1052: "file_getattr", 1051: "file_setattr", 1050: "file_setattr", 1047: "fspick", 1046: "fspick", 1045: "fsconfig", 1044: "fsconfig", 1043: "statfs", 1042: "statfs", 1041: "fstatfs", 1040: "fstatfs", 1035: "utimensat", 1034: "utimensat", 1033: "futimesat", 1032: "futimesat", 1027: "sync", 1026: "sync", 1025: "syncfs", 1024: "syncfs", 1023: "fsync", 1022: "fsync", 1021: "fdatasync", 1020: "fdatasync", 1019: "sync_file_range", 1018: "sync_file_range", 1017: "vmsplice", 1016: "vmsplice", 978: "setxattrat", 977: "setxattrat", 976: "setxattr", 975: "setxattr", 974: "lsetxattr", 973: "lsetxattr", 972: "fsetxattr", 971: "fsetxattr", 970: "getxattrat", 969: "getxattrat", 968: "getxattr", 967: "getxattr", 966: "lgetxattr", 965: "lgetxattr", 964: "fgetxattr", 963: "fgetxattr", 962: "listxattrat", 961: "listxattrat", 960: "listxattr", 959: "listxattr", 958: "llistxattr", 957: "llistxattr", 956: "flistxattr", 955: "flistxattr", 954: "removexattrat", 953: "removexattrat", 952: "removexattr", 951: "removexattr", 950: "lremovexattr", 949: "lremovexattr", 948: "fremovexattr", 947: "fremovexattr", 944: "open_tree", 943: "open_tree", 934: "mount_setattr", 933: "mount_setattr", 932: "open_tree_attr", 931: "open_tree_attr", 924: "close_range", 923: "close_range", 922: "dup3", 921: "dup3", 920: "dup2", 919: "dup2", 918: "dup", 917: "dup", 904: "getdents", 903: "getdents", 902: "getdents64", 901: "getdents64", 900: "ioctl", 899: "ioctl", 898: "fcntl", 897: "fcntl", 892: "mkdirat", 891: "mkdirat", 890: "mkdir", 889: "mkdir", 888: "rmdir", 887: "rmdir", 886: "unlinkat", 885: "unlinkat", 884: "unlink", 883: "unlink", 882: "symlinkat", 881: "symlinkat", 880: "symlink", 879: "symlink", 878: "linkat", 877: "linkat", 876: "link", 875: "link", 874: "renameat2", 873: "renameat2", 872: "renameat", 871: "renameat", 870: "rename", 869: "rename", 860: "newstat", 859: "newstat", 858: "newlstat", 857: "newlstat", 856: "newfstatat", 855: "newfstatat", 854: "newfstat", 853: "newfstat", 852: "readlinkat", 851: "readlinkat", 850: "readlink", 849: "readlink", 848: "statx", 847: "statx", 846: "lseek", 845: "lseek", 844: "read", 843: "read", 842: "write", 841: "write", 840: "pread64", 839: "pread64", 838: "pwrite64", 837: "pwrite64", 836: "readv", 835: "readv", 834: "writev", 833: "writev", 832: "preadv", 831: "preadv", 830: "preadv2", 829: "preadv2", 828: "pwritev", 827: "pwritev", 826: "pwritev2", 825: "pwritev2", 820: "truncate", 819: "truncate", 818: "ftruncate", 817: "ftruncate", 816: "fallocate", 815: "fallocate", 814: "faccessat", 813: "faccessat", 812: "faccessat2", 811: "faccessat2", 810: "access", 809: "access", 808: "chdir", 807: "chdir", 806: "fchdir", 805: "fchdir", 804: "chroot", 803: "chroot", 802: "fchmod", 801: "fchmod", 800: "fchmodat2", 799: "fchmodat2", 798: "fchmodat", 797: "fchmodat", 796: "chmod", 795: "chmod", 794: "fchownat", 793: "fchownat", 792: "chown", 791: "chown", 790: "lchown", 789: "lchown", 788: "fchown", 787: "fchown", 786: "open", 785: "open", 784: "openat", 783: "openat", 782: "openat2", 781: "openat2", 780: "creat", 779: "creat", 778: "close", 777: "close", 613: "readahead", 612: "readahead", 611: "fadvise64", 610: "fadvise64", 592: "cachestat", 591: "cachestat", 403: "finit_module", 402: "finit_module", 347: "syslog", 346: "syslog", 100: "mmap", 99: "mmap",
+ 1515: "io_uring_register", 1514: "io_uring_register", 1496: "io_uring_enter", 1495: "io_uring_enter", 1494: "io_uring_setup", 1493: "io_uring_setup", 1151: "quotactl_fd", 1150: "quotactl_fd", 1135: "name_to_handle_at", 1134: "name_to_handle_at", 1133: "open_by_handle_at", 1132: "open_by_handle_at", 1119: "flock", 1118: "flock", 1105: "io_setup", 1104: "io_setup", 1103: "io_destroy", 1102: "io_destroy", 1101: "io_submit", 1100: "io_submit", 1099: "io_cancel", 1098: "io_cancel", 1097: "io_getevents", 1096: "io_getevents", 1095: "io_pgetevents", 1094: "io_pgetevents", 1063: "fanotify_mark", 1062: "fanotify_mark", 1053: "file_getattr", 1052: "file_getattr", 1051: "file_setattr", 1050: "file_setattr", 1047: "fspick", 1046: "fspick", 1045: "fsconfig", 1044: "fsconfig", 1043: "statfs", 1042: "statfs", 1041: "fstatfs", 1040: "fstatfs", 1035: "utimensat", 1034: "utimensat", 1033: "futimesat", 1032: "futimesat", 1027: "sync", 1026: "sync", 1025: "syncfs", 1024: "syncfs", 1023: "fsync", 1022: "fsync", 1021: "fdatasync", 1020: "fdatasync", 1019: "sync_file_range", 1018: "sync_file_range", 1017: "vmsplice", 1016: "vmsplice", 978: "setxattrat", 977: "setxattrat", 976: "setxattr", 975: "setxattr", 974: "lsetxattr", 973: "lsetxattr", 972: "fsetxattr", 971: "fsetxattr", 970: "getxattrat", 969: "getxattrat", 968: "getxattr", 967: "getxattr", 966: "lgetxattr", 965: "lgetxattr", 964: "fgetxattr", 963: "fgetxattr", 962: "listxattrat", 961: "listxattrat", 960: "listxattr", 959: "listxattr", 958: "llistxattr", 957: "llistxattr", 956: "flistxattr", 955: "flistxattr", 954: "removexattrat", 953: "removexattrat", 952: "removexattr", 951: "removexattr", 950: "lremovexattr", 949: "lremovexattr", 948: "fremovexattr", 947: "fremovexattr", 944: "open_tree", 943: "open_tree", 934: "mount_setattr", 933: "mount_setattr", 932: "open_tree_attr", 931: "open_tree_attr", 924: "close_range", 923: "close_range", 922: "dup3", 921: "dup3", 920: "dup2", 919: "dup2", 918: "dup", 917: "dup", 904: "getdents", 903: "getdents", 902: "getdents64", 901: "getdents64", 900: "ioctl", 899: "ioctl", 898: "fcntl", 897: "fcntl", 892: "mkdirat", 891: "mkdirat", 890: "mkdir", 889: "mkdir", 888: "rmdir", 887: "rmdir", 886: "unlinkat", 885: "unlinkat", 884: "unlink", 883: "unlink", 882: "symlinkat", 881: "symlinkat", 880: "symlink", 879: "symlink", 878: "linkat", 877: "linkat", 876: "link", 875: "link", 874: "renameat2", 873: "renameat2", 872: "renameat", 871: "renameat", 870: "rename", 869: "rename", 860: "newstat", 859: "newstat", 858: "newlstat", 857: "newlstat", 856: "newfstatat", 855: "newfstatat", 854: "newfstat", 853: "newfstat", 852: "readlinkat", 851: "readlinkat", 850: "readlink", 849: "readlink", 848: "statx", 847: "statx", 846: "lseek", 845: "lseek", 844: "read", 843: "read", 842: "write", 841: "write", 840: "pread64", 839: "pread64", 838: "pwrite64", 837: "pwrite64", 836: "readv", 835: "readv", 834: "writev", 833: "writev", 832: "preadv", 831: "preadv", 830: "preadv2", 829: "preadv2", 828: "pwritev", 827: "pwritev", 826: "pwritev2", 825: "pwritev2", 820: "truncate", 819: "truncate", 818: "ftruncate", 817: "ftruncate", 816: "fallocate", 815: "fallocate", 814: "faccessat", 813: "faccessat", 812: "faccessat2", 811: "faccessat2", 810: "access", 809: "access", 808: "chdir", 807: "chdir", 806: "fchdir", 805: "fchdir", 804: "chroot", 803: "chroot", 802: "fchmod", 801: "fchmod", 800: "fchmodat2", 799: "fchmodat2", 798: "fchmodat", 797: "fchmodat", 796: "chmod", 795: "chmod", 794: "fchownat", 793: "fchownat", 792: "chown", 791: "chown", 790: "lchown", 789: "lchown", 788: "fchown", 787: "fchown", 786: "open", 785: "open", 784: "openat", 783: "openat", 782: "openat2", 781: "openat2", 780: "creat", 779: "creat", 778: "close", 777: "close", 613: "readahead", 612: "readahead", 611: "fadvise64", 610: "fadvise64", 592: "cachestat", 591: "cachestat", 403: "finit_module", 402: "finit_module", 347: "syslog", 346: "syslog", 100: "mmap", 99: "mmap",
}
func (s TraceId) String() string {
@@ -67,6 +67,8 @@ const SYS_ENTER_IO_URING_SETUP TraceId = 1494
const SYS_EXIT_IO_URING_SETUP TraceId = 1493
const SYS_ENTER_QUOTACTL_FD TraceId = 1151
const SYS_EXIT_QUOTACTL_FD TraceId = 1150
+const SYS_ENTER_NAME_TO_HANDLE_AT TraceId = 1135
+const SYS_EXIT_NAME_TO_HANDLE_AT TraceId = 1134
const SYS_ENTER_OPEN_BY_HANDLE_AT TraceId = 1133
const SYS_EXIT_OPEN_BY_HANDLE_AT TraceId = 1132
const SYS_ENTER_FLOCK TraceId = 1119
diff --git a/internal/types/name_to_handle_at.go b/internal/types/name_to_handle_at.go
deleted file mode 100644
index e03d0c7..0000000
--- a/internal/types/name_to_handle_at.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package types
-
-// Trace IDs for name_to_handle_at are not generated because the tracepoint is
-// ignored by default, but tests still need stable values.
-const (
- SYS_ENTER_NAME_TO_HANDLE_AT TraceId = 2001
- SYS_EXIT_NAME_TO_HANDLE_AT TraceId = 2000
-)
-
-func init() {
- traceId2String[SYS_ENTER_NAME_TO_HANDLE_AT] = "enter_name_to_handle_at"
- traceId2String[SYS_EXIT_NAME_TO_HANDLE_AT] = "exit_name_to_handle_at"
-
- traceId2Name[SYS_ENTER_NAME_TO_HANDLE_AT] = "name_to_handle_at"
- traceId2Name[SYS_EXIT_NAME_TO_HANDLE_AT] = "name_to_handle_at"
-}