[PATCH v2 3/4] perf augmented_raw_syscalls: Support arm64 raw syscalls

From: Leo Yan
Date: Thu Jun 06 2019 - 05:53:39 EST


This patch adds support for arm64 raw syscall numbers so that we can use
it on arm64 platform.

After applied this patch, we need to specify macro -D__aarch64__ or
-D__x86_64__ in compilation option so Clang can use the corresponding
syscall numbers for arm64 or x86_64 respectively, other architectures
will report failure when compilation.

Signed-off-by: Leo Yan <leo.yan@xxxxxxxxxx>
---
.../examples/bpf/augmented_raw_syscalls.c | 81 +++++++++++++++++++
1 file changed, 81 insertions(+)

diff --git a/tools/perf/examples/bpf/augmented_raw_syscalls.c b/tools/perf/examples/bpf/augmented_raw_syscalls.c
index 5c4a4e715ae6..a3701a4daf2e 100644
--- a/tools/perf/examples/bpf/augmented_raw_syscalls.c
+++ b/tools/perf/examples/bpf/augmented_raw_syscalls.c
@@ -45,6 +45,83 @@ struct augmented_filename {
char value[PATH_MAX];
};

+#if defined(__aarch64__)
+
+/* syscalls where the first arg is a string */
+#define SYS_OPEN 1024
+#define SYS_STAT 1038
+#define SYS_LSTAT 1039
+#define SYS_ACCESS 1033
+#define SYS_EXECVE 221
+#define SYS_TRUNCATE 45
+#define SYS_CHDIR 49
+#define SYS_RENAME 1034
+#define SYS_MKDIR 1030
+#define SYS_RMDIR 1031
+#define SYS_CREAT 1064
+#define SYS_LINK 1025
+#define SYS_UNLINK 1026
+#define SYS_SYMLINK 1036
+#define SYS_READLINK 1035
+#define SYS_CHMOD 1028
+#define SYS_CHOWN 1029
+#define SYS_LCHOWN 1032
+#define SYS_MKNOD 1027
+#define SYS_STATFS 1056
+#define SYS_PIVOT_ROOT 41
+#define SYS_CHROOT 51
+#define SYS_ACCT 89
+#define SYS_SWAPON 224
+#define SYS_SWAPOFF 225
+#define SYS_DELETE_MODULE 106
+#define SYS_SETXATTR 5
+#define SYS_LSETXATTR 6
+#define SYS_GETXATTR 8
+#define SYS_LGETXATTR 9
+#define SYS_LISTXATTR 11
+#define SYS_LLISTXATTR 12
+#define SYS_REMOVEXATTR 14
+#define SYS_LREMOVEXATTR 15
+#define SYS_MQ_OPEN 180
+#define SYS_MQ_UNLINK 181
+#define SYS_ADD_KEY 217
+#define SYS_REQUEST_KEY 218
+#define SYS_SYMLINKAT 36
+#define SYS_MEMFD_CREATE 279
+
+/* syscalls where the second arg is a string */
+#define SYS_PWRITE64 68
+#define SYS_RENAME 1034
+#define SYS_QUOTACTL 60
+#define SYS_FSETXATTR 7
+#define SYS_FGETXATTR 10
+#define SYS_FREMOVEXATTR 16
+#define SYS_MQ_TIMEDSEND 182
+#define SYS_REQUEST_KEY 218
+#define SYS_INOTIFY_ADD_WATCH 27
+#define SYS_OPENAT 56
+#define SYS_MKDIRAT 34
+#define SYS_MKNODAT 33
+#define SYS_FCHOWNAT 54
+#define SYS_FUTIMESAT 1066
+#define SYS_NEWFSTATAT 1054
+#define SYS_UNLINKAT 35
+#define SYS_RENAMEAT 38
+#define SYS_LINKAT 37
+#define SYS_READLINKAT 78
+#define SYS_FCHMODAT 53
+#define SYS_FACCESSAT 48
+#define SYS_UTIMENSAT 88
+#define SYS_NAME_TO_HANDLE_AT 264
+#define SYS_FINIT_MODULE 273
+#define SYS_RENAMEAT2 276
+#define SYS_EXECVEAT 281
+#define SYS_STATX 291
+#define SYS_MOVE_MOUNT 429
+#define SYS_FSPICK 433
+
+#elif defined(__x86_64__)
+
/* syscalls where the first arg is a string */
#define SYS_OPEN 2
#define SYS_STAT 4
@@ -119,6 +196,10 @@ struct augmented_filename {
#define SYS_MOVE_MOUNT 429
#define SYS_FSPICK 433

+#else
+#error "unsupported architecture"
+#endif
+
pid_filter(pids_filtered);

struct augmented_args_filename {
--
2.17.1