summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-22 18:20:44 +0200
committerPaul Buetow <paul@buetow.org>2026-02-22 18:20:44 +0200
commit8e52ba5a8661c717f45e00608ad64f0adc6de3e1 (patch)
treec90dcccca9168552d311312ba238e7b84fab9e0d
parent40ce5bc1d9da31b49f42e488d2ab5633e7c6a3fb (diff)
Implement mmap/msync syscall support with unit and integration coverage
-rw-r--r--integrationtests/cmd/ioworkload/scenario_mmap.go110
-rw-r--r--integrationtests/cmd/ioworkload/scenarios.go3
-rw-r--r--integrationtests/mmap_test.go46
-rw-r--r--internal/c/generated_tracepoints.c47
-rw-r--r--internal/c/generated_tracepoints_result.txt3
-rw-r--r--internal/eventloop.go1
-rw-r--r--internal/eventloop_test.go79
-rw-r--r--internal/generate/classify.go2
-rw-r--r--internal/generate/classify_test.go2
-rw-r--r--internal/generate/testdata.go30
-rw-r--r--internal/tracepoints/generated_tracepoints.go2
-rw-r--r--internal/types/generated_types.go6
12 files changed, 326 insertions, 5 deletions
diff --git a/integrationtests/cmd/ioworkload/scenario_mmap.go b/integrationtests/cmd/ioworkload/scenario_mmap.go
new file mode 100644
index 0000000..e7b9f02
--- /dev/null
+++ b/integrationtests/cmd/ioworkload/scenario_mmap.go
@@ -0,0 +1,110 @@
+package main
+
+import (
+ "fmt"
+ "path/filepath"
+ "syscall"
+ "unsafe"
+)
+
+// mmapBasic creates a file-backed shared mapping.
+// mmap(2) allows closing the fd after mapping without invalidating the mapping.
+func mmapBasic() error {
+ dir, cleanup, err := makeTempDir("mmap-basic")
+ if err != nil {
+ return err
+ }
+ defer cleanup()
+
+ path := filepath.Join(dir, "mmapfile.txt")
+ fd, err := syscall.Open(path, syscall.O_RDWR|syscall.O_CREAT|syscall.O_TRUNC, 0o644)
+ if err != nil {
+ return fmt.Errorf("open: %w", err)
+ }
+ defer syscall.Close(fd)
+
+ data := []byte("mmap shared page data")
+ if _, err := syscall.Write(fd, data); err != nil {
+ return fmt.Errorf("write: %w", err)
+ }
+
+ mapped, err := syscall.Mmap(fd, 0, len(data), syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED)
+ if err != nil {
+ return fmt.Errorf("mmap: %w", err)
+ }
+ defer syscall.Munmap(mapped)
+
+ copy(mapped[:4], []byte("MMAP"))
+ return nil
+}
+
+// mmapMsyncSync maps a file and flushes modifications via msync(2).
+// Per msync(2), callers should specify exactly one of MS_SYNC or MS_ASYNC.
+func mmapMsyncSync() error {
+ dir, cleanup, err := makeTempDir("mmap-msync-sync")
+ if err != nil {
+ return err
+ }
+ defer cleanup()
+
+ path := filepath.Join(dir, "msyncfile.txt")
+ fd, err := syscall.Open(path, syscall.O_RDWR|syscall.O_CREAT|syscall.O_TRUNC, 0o644)
+ if err != nil {
+ return fmt.Errorf("open: %w", err)
+ }
+ defer syscall.Close(fd)
+
+ data := []byte("msync shared page data")
+ if _, err := syscall.Write(fd, data); err != nil {
+ return fmt.Errorf("write: %w", err)
+ }
+
+ mapped, err := syscall.Mmap(fd, 0, len(data), syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED)
+ if err != nil {
+ return fmt.Errorf("mmap: %w", err)
+ }
+ defer syscall.Munmap(mapped)
+
+ copy(mapped[:5], []byte("MSYNC"))
+
+ _, _, errno := syscall.Syscall(syscall.SYS_MSYNC, uintptr(unsafe.Pointer(&mapped[0])), uintptr(len(mapped)), uintptr(syscall.MS_SYNC))
+ if errno != 0 {
+ return fmt.Errorf("msync: %w", errno)
+ }
+ return nil
+}
+
+// mmapMsyncInvalidFlags calls msync(2) with both MS_SYNC and MS_ASYNC.
+// The kernel returns EINVAL, but enter_msync should still be captured.
+func mmapMsyncInvalidFlags() error {
+ dir, cleanup, err := makeTempDir("mmap-msync-invalid-flags")
+ if err != nil {
+ return err
+ }
+ defer cleanup()
+
+ path := filepath.Join(dir, "msyncinvalidfile.txt")
+ fd, err := syscall.Open(path, syscall.O_RDWR|syscall.O_CREAT|syscall.O_TRUNC, 0o644)
+ if err != nil {
+ return fmt.Errorf("open: %w", err)
+ }
+ defer syscall.Close(fd)
+
+ data := []byte("msync invalid flags data")
+ if _, err := syscall.Write(fd, data); err != nil {
+ return fmt.Errorf("write: %w", err)
+ }
+
+ mapped, err := syscall.Mmap(fd, 0, len(data), syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED)
+ if err != nil {
+ return fmt.Errorf("mmap: %w", err)
+ }
+ defer syscall.Munmap(mapped)
+
+ flags := syscall.MS_SYNC | syscall.MS_ASYNC
+ _, _, errno := syscall.Syscall(syscall.SYS_MSYNC, uintptr(unsafe.Pointer(&mapped[0])), uintptr(len(mapped)), uintptr(flags))
+ if errno != syscall.EINVAL {
+ return fmt.Errorf("expected EINVAL from msync with both MS_SYNC|MS_ASYNC, got %v", errno)
+ }
+ return nil
+}
diff --git a/integrationtests/cmd/ioworkload/scenarios.go b/integrationtests/cmd/ioworkload/scenarios.go
index 4bd85b6..d99b584 100644
--- a/integrationtests/cmd/ioworkload/scenarios.go
+++ b/integrationtests/cmd/ioworkload/scenarios.go
@@ -82,6 +82,9 @@ var scenarios = map[string]func() error{
"sync-fsync-ebadf": syncFsyncEbadf,
"sync-fdatasync-ebadf": syncFdatasyncEbadf,
"sync-file-range-ebadf": syncFileRangeEbadf,
+ "mmap-basic": mmapBasic,
+ "mmap-msync-sync": mmapMsyncSync,
+ "mmap-msync-invalid-flags": mmapMsyncInvalidFlags,
"truncate-basic": truncateBasic,
"truncate-ftruncate": truncateFtruncate,
"truncate-enoent": truncateEnoent,
diff --git a/integrationtests/mmap_test.go b/integrationtests/mmap_test.go
new file mode 100644
index 0000000..89cce66
--- /dev/null
+++ b/integrationtests/mmap_test.go
@@ -0,0 +1,46 @@
+package integrationtests
+
+import "testing"
+
+func TestMmapBasic(t *testing.T) {
+ runScenario(t, "mmap-basic", []ExpectedEvent{
+ {
+ PathContains: "mmapfile.txt",
+ Tracepoint: "enter_mmap",
+ Comm: "ioworkload",
+ MinCount: 1,
+ },
+ })
+}
+
+func TestMmapMsyncSync(t *testing.T) {
+ runScenario(t, "mmap-msync-sync", []ExpectedEvent{
+ {
+ PathContains: "msyncfile.txt",
+ Tracepoint: "enter_mmap",
+ Comm: "ioworkload",
+ MinCount: 1,
+ },
+ {
+ Tracepoint: "enter_msync",
+ Comm: "ioworkload",
+ MinCount: 1,
+ },
+ })
+}
+
+func TestMmapMsyncInvalidFlags(t *testing.T) {
+ runScenario(t, "mmap-msync-invalid-flags", []ExpectedEvent{
+ {
+ PathContains: "msyncinvalidfile.txt",
+ Tracepoint: "enter_mmap",
+ Comm: "ioworkload",
+ MinCount: 1,
+ },
+ {
+ Tracepoint: "enter_msync",
+ Comm: "ioworkload",
+ MinCount: 1,
+ },
+ })
+}
diff --git a/internal/c/generated_tracepoints.c b/internal/c/generated_tracepoints.c
index a40f558..72cb070 100644
--- a/internal/c/generated_tracepoints.c
+++ b/internal/c/generated_tracepoints.c
@@ -121,7 +121,6 @@
/// Ignoring sys_enter_msgget sys_exit_msgget as possibly not file I/O related
/// Ignoring sys_enter_msgrcv sys_exit_msgrcv as possibly not file I/O related
/// Ignoring sys_enter_msgsnd sys_exit_msgsnd as possibly not file I/O related
-/// 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
@@ -468,6 +467,8 @@
#define SYS_EXIT_CREAT 779
#define SYS_ENTER_CLOSE 778
#define SYS_EXIT_CLOSE 777
+#define SYS_ENTER_MSYNC 707
+#define SYS_EXIT_MSYNC 706
#define SYS_ENTER_READAHEAD 613
#define SYS_EXIT_READAHEAD 612
#define SYS_ENTER_FADVISE64 611
@@ -5365,6 +5366,50 @@ int handle_sys_exit_close(struct trace_event_raw_sys_exit *ctx) {
return 0;
}
+/// sys_enter_msync is a struct null_event
+SEC("tracepoint/syscalls/sys_enter_msync")
+int handle_sys_enter_msync(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);
+ if (!ev)
+ return 0;
+
+ ev->event_type = ENTER_NULL_EVENT;
+ ev->trace_id = SYS_ENTER_MSYNC;
+ ev->pid = pid;
+ ev->tid = tid;
+ ev->time = bpf_ktime_get_boot_ns();
+
+ bpf_ringbuf_submit(ev, 0);
+ return 0;
+}
+
+/// sys_exit_msync is a struct ret_event (UNCLASSIFIED)
+SEC("tracepoint/syscalls/sys_exit_msync")
+int handle_sys_exit_msync(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_MSYNC;
+ 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_readahead is a struct fd_event
SEC("tracepoint/syscalls/sys_enter_readahead")
int handle_sys_enter_readahead(struct trace_event_raw_sys_enter *ctx) {
diff --git a/internal/c/generated_tracepoints_result.txt b/internal/c/generated_tracepoints_result.txt
index fc722c1..357d279 100644
--- a/internal/c/generated_tracepoints_result.txt
+++ b/internal/c/generated_tracepoints_result.txt
@@ -119,7 +119,6 @@ Ignoring sys_enter_msgctl sys_exit_msgctl as possibly not file I/O related
Ignoring sys_enter_msgget sys_exit_msgget as possibly not file I/O related
Ignoring sys_enter_msgrcv sys_exit_msgrcv as possibly not file I/O related
Ignoring sys_enter_msgsnd sys_exit_msgsnd as possibly not file I/O related
-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
@@ -318,6 +317,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_msync is a struct null_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
@@ -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_msync 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)
diff --git a/internal/eventloop.go b/internal/eventloop.go
index 01b37eb..451e8ae 100644
--- a/internal/eventloop.go
+++ b/internal/eventloop.go
@@ -419,7 +419,6 @@ func (e *eventLoop) tracepointExited(exitEv event.Event, ch chan<- *event.Pair)
}
// TODO: implement copy_file_range
// TODO: open_by_handle_at
- // TODO: mmap, msync...
// TODO: getcwd?
prevPairTime, _ := e.prevPairTimes[ep.EnterEv.GetTid()]
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go
index e6e3a4a..ca82f55 100644
--- a/internal/eventloop_test.go
+++ b/internal/eventloop_test.go
@@ -37,6 +37,8 @@ func TestEventloop(t *testing.T) {
"CloseRangeFailureTest": makeCloseRangeFailureTestData(t),
"FsyncEventTest": makeFsyncEventTestData(t),
"SyncFileRangeEventTest": makeSyncFileRangeEventTestData(t),
+ "MmapEventTest": makeMmapEventTestData(t),
+ "MsyncEventTest": makeMsyncEventTestData(t),
"FtruncateEventTest": makeFtruncateEventTestData(t),
// PathEvent tests
"MkdirEventTest": makeMkdirEventTestData(t),
@@ -643,6 +645,83 @@ func makeSyncFileRangeEventTestData(t *testing.T) (td testData) {
return td
}
+func makeMmapEventTestData(t *testing.T) (td testData) {
+ fd := int32(48)
+ filename := "mmap_test.txt"
+
+ openEnterEv, _ := makeEnterOpenEvent(t, defaulTime, defaultPid, defaultTid)
+ copy(openEnterEv.Filename[:], filename)
+ openEnterBytes, err := openEnterEv.Bytes()
+ if err != nil {
+ t.Fatal(err)
+ }
+ td.rawTracepoints = append(td.rawTracepoints, openEnterBytes)
+
+ openExitEv, _ := makeExitOpenEvent(t, defaulTime+100, defaultPid, defaultTid)
+ openExitEv.Ret = int64(fd)
+ openExitBytes, err := openExitEv.Bytes()
+ if err != nil {
+ t.Fatal(err)
+ }
+ td.rawTracepoints = append(td.rawTracepoints, openExitBytes)
+
+ enterEv, enterEvBytes := makeEnterFdEvent(t, defaulTime+200, defaultPid, defaultTid, fd, types.SYS_ENTER_MMAP)
+ td.rawTracepoints = append(td.rawTracepoints, enterEvBytes)
+
+ const fakeMappedAddr = int64(0x70000000)
+ exitEv, exitEvBytes := makeExitRetEvent(t, defaulTime+300, defaultPid, defaultTid, types.SYS_EXIT_MMAP, fakeMappedAddr)
+ td.rawTracepoints = append(td.rawTracepoints, exitEvBytes)
+
+ td.validates = append(td.validates, func(t *testing.T, el *eventLoop, ep *event.Pair) {
+ if !openEnterEv.Equals(ep.EnterEv) {
+ t.Errorf("Expected '%v' but got '%v'", openEnterEv, ep.EnterEv)
+ }
+ if !openExitEv.Equals(ep.ExitEv) {
+ t.Errorf("Expected '%v' but got '%v'", openExitEv, ep.ExitEv)
+ }
+ verifyFileDescriptor(t, el, fd, filename)
+ })
+
+ 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.Fatalf("Expected file metadata for mmap event")
+ }
+ if ep.File.Name() != filename {
+ t.Errorf("Expected mmap file name '%s' but got '%s'", filename, ep.File.Name())
+ }
+ })
+
+ return td
+}
+
+func makeMsyncEventTestData(t *testing.T) (td testData) {
+ enterEv, enterEvBytes := makeEnterNullEvent(t, defaulTime, defaultPid, defaultTid, types.SYS_ENTER_MSYNC)
+ td.rawTracepoints = append(td.rawTracepoints, enterEvBytes)
+
+ exitEv, exitEvBytes := makeExitRetEvent(t, defaulTime+100, defaultPid, defaultTid, types.SYS_EXIT_MSYNC, 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 msync event to not carry file metadata, got %v", ep.File)
+ }
+ })
+
+ return td
+}
+
func makeFtruncateEventTestData(t *testing.T) (td testData) {
fd := int32(46)
enterEv, enterEvBytes := makeEnterFdEvent(t, defaulTime, defaultPid, defaultTid, fd, types.SYS_ENTER_FTRUNCATE)
diff --git a/internal/generate/classify.go b/internal/generate/classify.go
index c55e46f..b79d49c 100644
--- a/internal/generate/classify.go
+++ b/internal/generate/classify.go
@@ -113,6 +113,8 @@ func classifyNameOnly(name string) (ClassificationResult, bool) {
return ClassificationResult{Kind: KindNull}, true
case "sys_enter_sync":
return ClassificationResult{Kind: KindNull}, true
+ case "sys_enter_msync":
+ return ClassificationResult{Kind: KindNull}, true
}
if strings.HasPrefix(name, "sys_enter_io_") {
return ClassificationResult{Kind: KindNull}, true
diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go
index 07c6027..285c8e2 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_msync",
"sys_exit_read", "sys_exit_openat",
}
for _, name := range noIgnore {
@@ -297,6 +298,7 @@ func TestClassifySyscallPairAccepted(t *testing.T) {
{"dup3", FormatDup3, FormatExitDup3, KindDup3},
{"fcntl", FormatFcntl, FormatExitFcntl, KindFcntl},
{"sync", FormatSync, FormatExitSync, KindNull},
+ {"msync", FormatMsync, FormatExitMsync, KindNull},
{"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 e36a6a1..c03c0d7 100644
--- a/internal/generate/testdata.go
+++ b/internal/generate/testdata.go
@@ -152,6 +152,36 @@ format:
print fmt: "0x%lx", REC->ret
`
+const FormatMsync = `name: sys_enter_msync
+ID: 1029
+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 long start; offset:16; size:8; signed:0;
+ field:size_t len; offset:24; size:8; signed:0;
+ field:int flags; offset:32; size:8; signed:0;
+
+print fmt: "start: 0x%08lx, len: 0x%08lx, flags: 0x%08lx", ((unsigned long)(REC->start)), ((unsigned long)(REC->len)), ((unsigned long)(REC->flags))
+`
+
+const FormatExitMsync = `name: sys_exit_msync
+ID: 1028
+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:
diff --git a/internal/tracepoints/generated_tracepoints.go b/internal/tracepoints/generated_tracepoints.go
index 04ce104..c81dd9c 100644
--- a/internal/tracepoints/generated_tracepoints.go
+++ b/internal/tracepoints/generated_tracepoints.go
@@ -216,6 +216,8 @@ var List = []string{
"sys_exit_creat",
"sys_enter_close",
"sys_exit_close",
+ "sys_enter_msync",
+ "sys_exit_msync",
"sys_enter_readahead",
"sys_exit_readahead",
"sys_enter_fadvise64",
diff --git a/internal/types/generated_types.go b/internal/types/generated_types.go
index 5a7b912..c0e3ecb 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", 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",
+ 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", 707: "enter_msync", 706: "exit_msync", 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", 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",
+ 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", 707: "msync", 706: "msync", 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 {
@@ -273,6 +273,8 @@ const SYS_ENTER_CREAT TraceId = 780
const SYS_EXIT_CREAT TraceId = 779
const SYS_ENTER_CLOSE TraceId = 778
const SYS_EXIT_CLOSE TraceId = 777
+const SYS_ENTER_MSYNC TraceId = 707
+const SYS_EXIT_MSYNC TraceId = 706
const SYS_ENTER_READAHEAD TraceId = 613
const SYS_EXIT_READAHEAD TraceId = 612
const SYS_ENTER_FADVISE64 TraceId = 611