diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-04-04 18:05:36 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-04-08 08:58:14 -0400 |
commit | 1b700c9975008615ad470cf79acc8455ce60a695 (patch) | |
tree | c7741b3db935280acc9365ef01b0dcda8f2fc296 /tools | |
parent | 5af56fab2b11769e35ce96613d321bcc0f7b84c1 (diff) |
perf tools: Build syscall table .c header from kernel's syscall_64.tbl
We used libaudit to map ids to syscall names and vice-versa, but that
imposes a delay in supporting new syscalls, having to wait for libaudit
to get those new syscalls on its tables.
To remove that delay, for x86_64 initially, grab a copy of
arch/x86/entry/syscalls/syscall_64.tbl and use it to generate those
tables.
Syscalls currently not available in audit-libs:
# trace -e copy_file_range,membarrier,mlock2,pread64,pwrite64,timerfd_create,userfaultfd
Error: Invalid syscall copy_file_range, membarrier, mlock2, pread64, pwrite64, timerfd_create, userfaultfd
Hint: try 'perf list syscalls:sys_enter_*'
Hint: and: 'man syscalls'
#
With this patch:
# trace -e copy_file_range,membarrier,mlock2,pread64,pwrite64,timerfd_create,userfaultfd
8505.733 ( 0.010 ms): gnome-shell/2519 timerfd_create(flags: 524288) = 36
8506.688 ( 0.005 ms): gnome-shell/2519 timerfd_create(flags: 524288) = 40
30023.097 ( 0.025 ms): qemu-system-x8/24629 pwrite64(fd: 18, buf: 0x7f63ae382000, count: 4096, pos: 529592320) = 4096
31268.712 ( 0.028 ms): qemu-system-x8/24629 pwrite64(fd: 18, buf: 0x7f63afd8b000, count: 4096, pos: 2314133504) = 4096
31268.854 ( 0.016 ms): qemu-system-x8/24629 pwrite64(fd: 18, buf: 0x7f63afda2000, count: 4096, pos: 2314137600) = 4096
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-51xfjbxevdsucmnbc4ka5r88@git.kernel.org
[ Added make dep for 'prepare' in 'LIBPERF_IN', fix by Wang Nan to fix parallell build ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/Makefile.perf | 13 | ||||
-rw-r--r-- | tools/perf/arch/x86/Makefile | 23 | ||||
-rw-r--r-- | tools/perf/arch/x86/entry/syscalls/syscall_64.tbl | 374 | ||||
-rwxr-xr-x | tools/perf/arch/x86/entry/syscalls/syscalltbl.sh | 39 | ||||
-rw-r--r-- | tools/perf/config/Makefile | 2 | ||||
-rw-r--r-- | tools/perf/util/Build | 4 | ||||
-rw-r--r-- | tools/perf/util/syscalltbl.c | 6 |
7 files changed, 456 insertions, 5 deletions
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index 58aed81a21ea..bde8cbae7dd9 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf | |||
@@ -183,6 +183,11 @@ endif | |||
183 | include config/Makefile | 183 | include config/Makefile |
184 | endif | 184 | endif |
185 | 185 | ||
186 | ifeq ($(config),0) | ||
187 | include $(srctree)/tools/scripts/Makefile.arch | ||
188 | -include arch/$(ARCH)/Makefile | ||
189 | endif | ||
190 | |||
186 | # The FEATURE_DUMP_EXPORT holds location of the actual | 191 | # The FEATURE_DUMP_EXPORT holds location of the actual |
187 | # FEATURE_DUMP file to be used to bypass feature detection | 192 | # FEATURE_DUMP file to be used to bypass feature detection |
188 | # (for bpf or any other subproject) | 193 | # (for bpf or any other subproject) |
@@ -388,7 +393,7 @@ endif | |||
388 | __build-dir = $(subst $(OUTPUT),,$(dir $@)) | 393 | __build-dir = $(subst $(OUTPUT),,$(dir $@)) |
389 | build-dir = $(if $(__build-dir),$(__build-dir),.) | 394 | build-dir = $(if $(__build-dir),$(__build-dir),.) |
390 | 395 | ||
391 | prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h fixdep | 396 | prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h fixdep archheaders |
392 | 397 | ||
393 | $(OUTPUT)%.o: %.c prepare FORCE | 398 | $(OUTPUT)%.o: %.c prepare FORCE |
394 | $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@ | 399 | $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@ |
@@ -428,7 +433,7 @@ $(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h) | |||
428 | 433 | ||
429 | LIBPERF_IN := $(OUTPUT)libperf-in.o | 434 | LIBPERF_IN := $(OUTPUT)libperf-in.o |
430 | 435 | ||
431 | $(LIBPERF_IN): fixdep FORCE | 436 | $(LIBPERF_IN): prepare fixdep FORCE |
432 | $(Q)$(MAKE) $(build)=libperf | 437 | $(Q)$(MAKE) $(build)=libperf |
433 | 438 | ||
434 | $(LIB_FILE): $(LIBPERF_IN) | 439 | $(LIB_FILE): $(LIBPERF_IN) |
@@ -623,7 +628,7 @@ config-clean: | |||
623 | $(call QUIET_CLEAN, config) | 628 | $(call QUIET_CLEAN, config) |
624 | $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null | 629 | $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null |
625 | 630 | ||
626 | clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean | 631 | clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean |
627 | $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) | 632 | $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) |
628 | $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete | 633 | $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete |
629 | $(Q)$(RM) $(OUTPUT).config-detected | 634 | $(Q)$(RM) $(OUTPUT).config-detected |
@@ -660,5 +665,5 @@ FORCE: | |||
660 | .PHONY: all install clean config-clean strip install-gtk | 665 | .PHONY: all install clean config-clean strip install-gtk |
661 | .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell | 666 | .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell |
662 | .PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare | 667 | .PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare |
663 | .PHONY: libtraceevent_plugins | 668 | .PHONY: libtraceevent_plugins archheaders |
664 | 669 | ||
diff --git a/tools/perf/arch/x86/Makefile b/tools/perf/arch/x86/Makefile index 269af2143735..a33729173b13 100644 --- a/tools/perf/arch/x86/Makefile +++ b/tools/perf/arch/x86/Makefile | |||
@@ -4,3 +4,26 @@ endif | |||
4 | HAVE_KVM_STAT_SUPPORT := 1 | 4 | HAVE_KVM_STAT_SUPPORT := 1 |
5 | PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1 | 5 | PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1 |
6 | PERF_HAVE_JITDUMP := 1 | 6 | PERF_HAVE_JITDUMP := 1 |
7 | |||
8 | ### | ||
9 | # Syscall table generation | ||
10 | # | ||
11 | |||
12 | out := $(OUTPUT)arch/x86/include/generated/asm | ||
13 | header := $(out)/syscalls_64.c | ||
14 | sys := $(srctree)/tools/perf/arch/x86/entry/syscalls | ||
15 | systbl := $(sys)/syscalltbl.sh | ||
16 | |||
17 | # Create output directory if not already present | ||
18 | _dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)') | ||
19 | |||
20 | $(header): $(sys)/syscall_64.tbl $(systbl) | ||
21 | @(test -d ../../kernel -a -d ../../tools -a -d ../perf && ( \ | ||
22 | (diff -B arch/x86/entry/syscalls/syscall_64.tbl ../../arch/x86/entry/syscalls/syscall_64.tbl >/dev/null) \ | ||
23 | || echo "Warning: x86_64's syscall_64.tbl differs from kernel" >&2 )) || true | ||
24 | $(Q)$(SHELL) '$(systbl)' $(sys)/syscall_64.tbl 'x86_64' > $@ | ||
25 | |||
26 | clean:: | ||
27 | rm -f $(header) | ||
28 | |||
29 | archheaders: $(header) | ||
diff --git a/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl b/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl new file mode 100644 index 000000000000..2e5b565adacc --- /dev/null +++ b/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl | |||
@@ -0,0 +1,374 @@ | |||
1 | # | ||
2 | # 64-bit system call numbers and entry vectors | ||
3 | # | ||
4 | # The format is: | ||
5 | # <number> <abi> <name> <entry point> | ||
6 | # | ||
7 | # The abi is "common", "64" or "x32" for this file. | ||
8 | # | ||
9 | 0 common read sys_read | ||
10 | 1 common write sys_write | ||
11 | 2 common open sys_open | ||
12 | 3 common close sys_close | ||
13 | 4 common stat sys_newstat | ||
14 | 5 common fstat sys_newfstat | ||
15 | 6 common lstat sys_newlstat | ||
16 | 7 common poll sys_poll | ||
17 | 8 common lseek sys_lseek | ||
18 | 9 common mmap sys_mmap | ||
19 | 10 common mprotect sys_mprotect | ||
20 | 11 common munmap sys_munmap | ||
21 | 12 common brk sys_brk | ||
22 | 13 64 rt_sigaction sys_rt_sigaction | ||
23 | 14 common rt_sigprocmask sys_rt_sigprocmask | ||
24 | 15 64 rt_sigreturn sys_rt_sigreturn/ptregs | ||
25 | 16 64 ioctl sys_ioctl | ||
26 | 17 common pread64 sys_pread64 | ||
27 | 18 common pwrite64 sys_pwrite64 | ||
28 | 19 64 readv sys_readv | ||
29 | 20 64 writev sys_writev | ||
30 | 21 common access sys_access | ||
31 | 22 common pipe sys_pipe | ||
32 | 23 common select sys_select | ||
33 | 24 common sched_yield sys_sched_yield | ||
34 | 25 common mremap sys_mremap | ||
35 | 26 common msync sys_msync | ||
36 | 27 common mincore sys_mincore | ||
37 | 28 common madvise sys_madvise | ||
38 | 29 common shmget sys_shmget | ||
39 | 30 common shmat sys_shmat | ||
40 | 31 common shmctl sys_shmctl | ||
41 | 32 common dup sys_dup | ||
42 | 33 common dup2 sys_dup2 | ||
43 | 34 common pause sys_pause | ||
44 | 35 common nanosleep sys_nanosleep | ||
45 | 36 common getitimer sys_getitimer | ||
46 | 37 common alarm sys_alarm | ||
47 | 38 common setitimer sys_setitimer | ||
48 | 39 common getpid sys_getpid | ||
49 | 40 common sendfile sys_sendfile64 | ||
50 | 41 common socket sys_socket | ||
51 | 42 common connect sys_connect | ||
52 | 43 common accept sys_accept | ||
53 | 44 common sendto sys_sendto | ||
54 | 45 64 recvfrom sys_recvfrom | ||
55 | 46 64 sendmsg sys_sendmsg | ||
56 | 47 64 recvmsg sys_recvmsg | ||
57 | 48 common shutdown sys_shutdown | ||
58 | 49 common bind sys_bind | ||
59 | 50 common listen sys_listen | ||
60 | 51 common getsockname sys_getsockname | ||
61 | 52 common getpeername sys_getpeername | ||
62 | 53 common socketpair sys_socketpair | ||
63 | 54 64 setsockopt sys_setsockopt | ||
64 | 55 64 getsockopt sys_getsockopt | ||
65 | 56 common clone sys_clone/ptregs | ||
66 | 57 common fork sys_fork/ptregs | ||
67 | 58 common vfork sys_vfork/ptregs | ||
68 | 59 64 execve sys_execve/ptregs | ||
69 | 60 common exit sys_exit | ||
70 | 61 common wait4 sys_wait4 | ||
71 | 62 common kill sys_kill | ||
72 | 63 common uname sys_newuname | ||
73 | 64 common semget sys_semget | ||
74 | 65 common semop sys_semop | ||
75 | 66 common semctl sys_semctl | ||
76 | 67 common shmdt sys_shmdt | ||
77 | 68 common msgget sys_msgget | ||
78 | 69 common msgsnd sys_msgsnd | ||
79 | 70 common msgrcv sys_msgrcv | ||
80 | 71 common msgctl sys_msgctl | ||
81 | 72 common fcntl sys_fcntl | ||
82 | 73 common flock sys_flock | ||
83 | 74 common fsync sys_fsync | ||
84 | 75 common fdatasync sys_fdatasync | ||
85 | 76 common truncate sys_truncate | ||
86 | 77 common ftruncate sys_ftruncate | ||
87 | 78 common getdents sys_getdents | ||
88 | 79 common getcwd sys_getcwd | ||
89 | 80 common chdir sys_chdir | ||
90 | 81 common fchdir sys_fchdir | ||
91 | 82 common rename sys_rename | ||
92 | 83 common mkdir sys_mkdir | ||
93 | 84 common rmdir sys_rmdir | ||
94 | 85 common creat sys_creat | ||
95 | 86 common link sys_link | ||
96 | 87 common unlink sys_unlink | ||
97 | 88 common symlink sys_symlink | ||
98 | 89 common readlink sys_readlink | ||
99 | 90 common chmod sys_chmod | ||
100 | 91 common fchmod sys_fchmod | ||
101 | 92 common chown sys_chown | ||
102 | 93 common fchown sys_fchown | ||
103 | 94 common lchown sys_lchown | ||
104 | 95 common umask sys_umask | ||
105 | 96 common gettimeofday sys_gettimeofday | ||
106 | 97 common getrlimit sys_getrlimit | ||
107 | 98 common getrusage sys_getrusage | ||
108 | 99 common sysinfo sys_sysinfo | ||
109 | 100 common times sys_times | ||
110 | 101 64 ptrace sys_ptrace | ||
111 | 102 common getuid sys_getuid | ||
112 | 103 common syslog sys_syslog | ||
113 | 104 common getgid sys_getgid | ||
114 | 105 common setuid sys_setuid | ||
115 | 106 common setgid sys_setgid | ||
116 | 107 common geteuid sys_geteuid | ||
117 | 108 common getegid sys_getegid | ||
118 | 109 common setpgid sys_setpgid | ||
119 | 110 common getppid sys_getppid | ||
120 | 111 common getpgrp sys_getpgrp | ||
121 | 112 common setsid sys_setsid | ||
122 | 113 common setreuid sys_setreuid | ||
123 | 114 common setregid sys_setregid | ||
124 | 115 common getgroups sys_getgroups | ||
125 | 116 common setgroups sys_setgroups | ||
126 | 117 common setresuid sys_setresuid | ||
127 | 118 common getresuid sys_getresuid | ||
128 | 119 common setresgid sys_setresgid | ||
129 | 120 common getresgid sys_getresgid | ||
130 | 121 common getpgid sys_getpgid | ||
131 | 122 common setfsuid sys_setfsuid | ||
132 | 123 common setfsgid sys_setfsgid | ||
133 | 124 common getsid sys_getsid | ||
134 | 125 common capget sys_capget | ||
135 | 126 common capset sys_capset | ||
136 | 127 64 rt_sigpending sys_rt_sigpending | ||
137 | 128 64 rt_sigtimedwait sys_rt_sigtimedwait | ||
138 | 129 64 rt_sigqueueinfo sys_rt_sigqueueinfo | ||
139 | 130 common rt_sigsuspend sys_rt_sigsuspend | ||
140 | 131 64 sigaltstack sys_sigaltstack | ||
141 | 132 common utime sys_utime | ||
142 | 133 common mknod sys_mknod | ||
143 | 134 64 uselib | ||
144 | 135 common personality sys_personality | ||
145 | 136 common ustat sys_ustat | ||
146 | 137 common statfs sys_statfs | ||
147 | 138 common fstatfs sys_fstatfs | ||
148 | 139 common sysfs sys_sysfs | ||
149 | 140 common getpriority sys_getpriority | ||
150 | 141 common setpriority sys_setpriority | ||
151 | 142 common sched_setparam sys_sched_setparam | ||
152 | 143 common sched_getparam sys_sched_getparam | ||
153 | 144 common sched_setscheduler sys_sched_setscheduler | ||
154 | 145 common sched_getscheduler sys_sched_getscheduler | ||
155 | 146 common sched_get_priority_max sys_sched_get_priority_max | ||
156 | 147 common sched_get_priority_min sys_sched_get_priority_min | ||
157 | 148 common sched_rr_get_interval sys_sched_rr_get_interval | ||
158 | 149 common mlock sys_mlock | ||
159 | 150 common munlock sys_munlock | ||
160 | 151 common mlockall sys_mlockall | ||
161 | 152 common munlockall sys_munlockall | ||
162 | 153 common vhangup sys_vhangup | ||
163 | 154 common modify_ldt sys_modify_ldt | ||
164 | 155 common pivot_root sys_pivot_root | ||
165 | 156 64 _sysctl sys_sysctl | ||
166 | 157 common prctl sys_prctl | ||
167 | 158 common arch_prctl sys_arch_prctl | ||
168 | 159 common adjtimex sys_adjtimex | ||
169 | 160 common setrlimit sys_setrlimit | ||
170 | 161 common chroot sys_chroot | ||
171 | 162 common sync sys_sync | ||
172 | 163 common acct sys_acct | ||
173 | 164 common settimeofday sys_settimeofday | ||
174 | 165 common mount sys_mount | ||
175 | 166 common umount2 sys_umount | ||
176 | 167 common swapon sys_swapon | ||
177 | 168 common swapoff sys_swapoff | ||
178 | 169 common reboot sys_reboot | ||
179 | 170 common sethostname sys_sethostname | ||
180 | 171 common setdomainname sys_setdomainname | ||
181 | 172 common iopl sys_iopl/ptregs | ||
182 | 173 common ioperm sys_ioperm | ||
183 | 174 64 create_module | ||
184 | 175 common init_module sys_init_module | ||
185 | 176 common delete_module sys_delete_module | ||
186 | 177 64 get_kernel_syms | ||
187 | 178 64 query_module | ||
188 | 179 common quotactl sys_quotactl | ||
189 | 180 64 nfsservctl | ||
190 | 181 common getpmsg | ||
191 | 182 common putpmsg | ||
192 | 183 common afs_syscall | ||
193 | 184 common tuxcall | ||
194 | 185 common security | ||
195 | 186 common gettid sys_gettid | ||
196 | 187 common readahead sys_readahead | ||
197 | 188 common setxattr sys_setxattr | ||
198 | 189 common lsetxattr sys_lsetxattr | ||
199 | 190 common fsetxattr sys_fsetxattr | ||
200 | 191 common getxattr sys_getxattr | ||
201 | 192 common lgetxattr sys_lgetxattr | ||
202 | 193 common fgetxattr sys_fgetxattr | ||
203 | 194 common listxattr sys_listxattr | ||
204 | 195 common llistxattr sys_llistxattr | ||
205 | 196 common flistxattr sys_flistxattr | ||
206 | 197 common removexattr sys_removexattr | ||
207 | 198 common lremovexattr sys_lremovexattr | ||
208 | 199 common fremovexattr sys_fremovexattr | ||
209 | 200 common tkill sys_tkill | ||
210 | 201 common time sys_time | ||
211 | 202 common futex sys_futex | ||
212 | 203 common sched_setaffinity sys_sched_setaffinity | ||
213 | 204 common sched_getaffinity sys_sched_getaffinity | ||
214 | 205 64 set_thread_area | ||
215 | 206 64 io_setup sys_io_setup | ||
216 | 207 common io_destroy sys_io_destroy | ||
217 | 208 common io_getevents sys_io_getevents | ||
218 | 209 64 io_submit sys_io_submit | ||
219 | 210 common io_cancel sys_io_cancel | ||
220 | 211 64 get_thread_area | ||
221 | 212 common lookup_dcookie sys_lookup_dcookie | ||
222 | 213 common epoll_create sys_epoll_create | ||
223 | 214 64 epoll_ctl_old | ||
224 | 215 64 epoll_wait_old | ||
225 | 216 common remap_file_pages sys_remap_file_pages | ||
226 | 217 common getdents64 sys_getdents64 | ||
227 | 218 common set_tid_address sys_set_tid_address | ||
228 | 219 common restart_syscall sys_restart_syscall | ||
229 | 220 common semtimedop sys_semtimedop | ||
230 | 221 common fadvise64 sys_fadvise64 | ||
231 | 222 64 timer_create sys_timer_create | ||
232 | 223 common timer_settime sys_timer_settime | ||
233 | 224 common timer_gettime sys_timer_gettime | ||
234 | 225 common timer_getoverrun sys_timer_getoverrun | ||
235 | 226 common timer_delete sys_timer_delete | ||
236 | 227 common clock_settime sys_clock_settime | ||
237 | 228 common clock_gettime sys_clock_gettime | ||
238 | 229 common clock_getres sys_clock_getres | ||
239 | 230 common clock_nanosleep sys_clock_nanosleep | ||
240 | 231 common exit_group sys_exit_group | ||
241 | 232 common epoll_wait sys_epoll_wait | ||
242 | 233 common epoll_ctl sys_epoll_ctl | ||
243 | 234 common tgkill sys_tgkill | ||
244 | 235 common utimes sys_utimes | ||
245 | 236 64 vserver | ||
246 | 237 common mbind sys_mbind | ||
247 | 238 common set_mempolicy sys_set_mempolicy | ||
248 | 239 common get_mempolicy sys_get_mempolicy | ||
249 | 240 common mq_open sys_mq_open | ||
250 | 241 common mq_unlink sys_mq_unlink | ||
251 | 242 common mq_timedsend sys_mq_timedsend | ||
252 | 243 common mq_timedreceive sys_mq_timedreceive | ||
253 | 244 64 mq_notify sys_mq_notify | ||
254 | 245 common mq_getsetattr sys_mq_getsetattr | ||
255 | 246 64 kexec_load sys_kexec_load | ||
256 | 247 64 waitid sys_waitid | ||
257 | 248 common add_key sys_add_key | ||
258 | 249 common request_key sys_request_key | ||
259 | 250 common keyctl sys_keyctl | ||
260 | 251 common ioprio_set sys_ioprio_set | ||
261 | 252 common ioprio_get sys_ioprio_get | ||
262 | 253 common inotify_init sys_inotify_init | ||
263 | 254 common inotify_add_watch sys_inotify_add_watch | ||
264 | 255 common inotify_rm_watch sys_inotify_rm_watch | ||
265 | 256 common migrate_pages sys_migrate_pages | ||
266 | 257 common openat sys_openat | ||
267 | 258 common mkdirat sys_mkdirat | ||
268 | 259 common mknodat sys_mknodat | ||
269 | 260 common fchownat sys_fchownat | ||
270 | 261 common futimesat sys_futimesat | ||
271 | 262 common newfstatat sys_newfstatat | ||
272 | 263 common unlinkat sys_unlinkat | ||
273 | 264 common renameat sys_renameat | ||
274 | 265 common linkat sys_linkat | ||
275 | 266 common symlinkat sys_symlinkat | ||
276 | 267 common readlinkat sys_readlinkat | ||
277 | 268 common fchmodat sys_fchmodat | ||
278 | 269 common faccessat sys_faccessat | ||
279 | 270 common pselect6 sys_pselect6 | ||
280 | 271 common ppoll sys_ppoll | ||
281 | 272 common unshare sys_unshare | ||
282 | 273 64 set_robust_list sys_set_robust_list | ||
283 | 274 64 get_robust_list sys_get_robust_list | ||
284 | 275 common splice sys_splice | ||
285 | 276 common tee sys_tee | ||
286 | 277 common sync_file_range sys_sync_file_range | ||
287 | 278 64 vmsplice sys_vmsplice | ||
288 | 279 64 move_pages sys_move_pages | ||
289 | 280 common utimensat sys_utimensat | ||
290 | 281 common epoll_pwait sys_epoll_pwait | ||
291 | 282 common signalfd sys_signalfd | ||
292 | 283 common timerfd_create sys_timerfd_create | ||
293 | 284 common eventfd sys_eventfd | ||
294 | 285 common fallocate sys_fallocate | ||
295 | 286 common timerfd_settime sys_timerfd_settime | ||
296 | 287 common timerfd_gettime sys_timerfd_gettime | ||
297 | 288 common accept4 sys_accept4 | ||
298 | 289 common signalfd4 sys_signalfd4 | ||
299 | 290 common eventfd2 sys_eventfd2 | ||
300 | 291 common epoll_create1 sys_epoll_create1 | ||
301 | 292 common dup3 sys_dup3 | ||
302 | 293 common pipe2 sys_pipe2 | ||
303 | 294 common inotify_init1 sys_inotify_init1 | ||
304 | 295 64 preadv sys_preadv | ||
305 | 296 64 pwritev sys_pwritev | ||
306 | 297 64 rt_tgsigqueueinfo sys_rt_tgsigqueueinfo | ||
307 | 298 common perf_event_open sys_perf_event_open | ||
308 | 299 64 recvmmsg sys_recvmmsg | ||
309 | 300 common fanotify_init sys_fanotify_init | ||
310 | 301 common fanotify_mark sys_fanotify_mark | ||
311 | 302 common prlimit64 sys_prlimit64 | ||
312 | 303 common name_to_handle_at sys_name_to_handle_at | ||
313 | 304 common open_by_handle_at sys_open_by_handle_at | ||
314 | 305 common clock_adjtime sys_clock_adjtime | ||
315 | 306 common syncfs sys_syncfs | ||
316 | 307 64 sendmmsg sys_sendmmsg | ||
317 | 308 common setns sys_setns | ||
318 | 309 common getcpu sys_getcpu | ||
319 | 310 64 process_vm_readv sys_process_vm_readv | ||
320 | 311 64 process_vm_writev sys_process_vm_writev | ||
321 | 312 common kcmp sys_kcmp | ||
322 | 313 common finit_module sys_finit_module | ||
323 | 314 common sched_setattr sys_sched_setattr | ||
324 | 315 common sched_getattr sys_sched_getattr | ||
325 | 316 common renameat2 sys_renameat2 | ||
326 | 317 common seccomp sys_seccomp | ||
327 | 318 common getrandom sys_getrandom | ||
328 | 319 common memfd_create sys_memfd_create | ||
329 | 320 common kexec_file_load sys_kexec_file_load | ||
330 | 321 common bpf sys_bpf | ||
331 | 322 64 execveat sys_execveat/ptregs | ||
332 | 323 common userfaultfd sys_userfaultfd | ||
333 | 324 common membarrier sys_membarrier | ||
334 | 325 common mlock2 sys_mlock2 | ||
335 | 326 common copy_file_range sys_copy_file_range | ||
336 | |||
337 | # | ||
338 | # x32-specific system call numbers start at 512 to avoid cache impact | ||
339 | # for native 64-bit operation. | ||
340 | # | ||
341 | 512 x32 rt_sigaction compat_sys_rt_sigaction | ||
342 | 513 x32 rt_sigreturn sys32_x32_rt_sigreturn | ||
343 | 514 x32 ioctl compat_sys_ioctl | ||
344 | 515 x32 readv compat_sys_readv | ||
345 | 516 x32 writev compat_sys_writev | ||
346 | 517 x32 recvfrom compat_sys_recvfrom | ||
347 | 518 x32 sendmsg compat_sys_sendmsg | ||
348 | 519 x32 recvmsg compat_sys_recvmsg | ||
349 | 520 x32 execve compat_sys_execve/ptregs | ||
350 | 521 x32 ptrace compat_sys_ptrace | ||
351 | 522 x32 rt_sigpending compat_sys_rt_sigpending | ||
352 | 523 x32 rt_sigtimedwait compat_sys_rt_sigtimedwait | ||
353 | 524 x32 rt_sigqueueinfo compat_sys_rt_sigqueueinfo | ||
354 | 525 x32 sigaltstack compat_sys_sigaltstack | ||
355 | 526 x32 timer_create compat_sys_timer_create | ||
356 | 527 x32 mq_notify compat_sys_mq_notify | ||
357 | 528 x32 kexec_load compat_sys_kexec_load | ||
358 | 529 x32 waitid compat_sys_waitid | ||
359 | 530 x32 set_robust_list compat_sys_set_robust_list | ||
360 | 531 x32 get_robust_list compat_sys_get_robust_list | ||
361 | 532 x32 vmsplice compat_sys_vmsplice | ||
362 | 533 x32 move_pages compat_sys_move_pages | ||
363 | 534 x32 preadv compat_sys_preadv64 | ||
364 | 535 x32 pwritev compat_sys_pwritev64 | ||
365 | 536 x32 rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo | ||
366 | 537 x32 recvmmsg compat_sys_recvmmsg | ||
367 | 538 x32 sendmmsg compat_sys_sendmmsg | ||
368 | 539 x32 process_vm_readv compat_sys_process_vm_readv | ||
369 | 540 x32 process_vm_writev compat_sys_process_vm_writev | ||
370 | 541 x32 setsockopt compat_sys_setsockopt | ||
371 | 542 x32 getsockopt compat_sys_getsockopt | ||
372 | 543 x32 io_setup compat_sys_io_setup | ||
373 | 544 x32 io_submit compat_sys_io_submit | ||
374 | 545 x32 execveat compat_sys_execveat/ptregs | ||
diff --git a/tools/perf/arch/x86/entry/syscalls/syscalltbl.sh b/tools/perf/arch/x86/entry/syscalls/syscalltbl.sh new file mode 100755 index 000000000000..49a18b9ad9cf --- /dev/null +++ b/tools/perf/arch/x86/entry/syscalls/syscalltbl.sh | |||
@@ -0,0 +1,39 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | in="$1" | ||
4 | arch="$2" | ||
5 | |||
6 | syscall_macro() { | ||
7 | nr="$1" | ||
8 | name="$2" | ||
9 | |||
10 | echo " [$nr] = \"$name\"," | ||
11 | } | ||
12 | |||
13 | emit() { | ||
14 | nr="$1" | ||
15 | entry="$2" | ||
16 | |||
17 | syscall_macro "$nr" "$entry" | ||
18 | } | ||
19 | |||
20 | echo "static const char *syscalltbl_${arch}[] = {" | ||
21 | |||
22 | sorted_table=$(mktemp /tmp/syscalltbl.XXXXXX) | ||
23 | grep '^[0-9]' "$in" | sort -n > $sorted_table | ||
24 | |||
25 | max_nr=0 | ||
26 | while read nr abi name entry compat; do | ||
27 | if [ $nr -ge 512 ] ; then # discard compat sycalls | ||
28 | break | ||
29 | fi | ||
30 | |||
31 | emit "$nr" "$name" | ||
32 | max_nr=$nr | ||
33 | done < $sorted_table | ||
34 | |||
35 | rm -f $sorted_table | ||
36 | |||
37 | echo "};" | ||
38 | |||
39 | echo "#define SYSCALLTBL_${arch}_MAX_ID ${max_nr}" | ||
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile index d1e2b856ef0f..1e46277286c2 100644 --- a/tools/perf/config/Makefile +++ b/tools/perf/config/Makefile | |||
@@ -27,7 +27,7 @@ NO_PERF_REGS := 1 | |||
27 | ifeq ($(ARCH),x86) | 27 | ifeq ($(ARCH),x86) |
28 | $(call detected,CONFIG_X86) | 28 | $(call detected,CONFIG_X86) |
29 | ifeq (${IS_64_BIT}, 1) | 29 | ifeq (${IS_64_BIT}, 1) |
30 | CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT | 30 | CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT -DHAVE_SYSCALL_TABLE -I$(OUTPUT)arch/x86/include/generated |
31 | ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S | 31 | ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S |
32 | LIBUNWIND_LIBS = -lunwind -lunwind-x86_64 | 32 | LIBUNWIND_LIBS = -lunwind -lunwind-x86_64 |
33 | $(call detected,CONFIG_X86_64) | 33 | $(call detected,CONFIG_X86_64) |
diff --git a/tools/perf/util/Build b/tools/perf/util/Build index 3443646d8da3..ea4ac03c1ec8 100644 --- a/tools/perf/util/Build +++ b/tools/perf/util/Build | |||
@@ -148,6 +148,10 @@ CFLAGS_libstring.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ET | |||
148 | CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" | 148 | CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" |
149 | CFLAGS_parse-events.o += -Wno-redundant-decls | 149 | CFLAGS_parse-events.o += -Wno-redundant-decls |
150 | 150 | ||
151 | $(OUTPUT)util/syscalltbl.o: util/syscalltbl.c arch/x86/entry/syscalls/syscall_64.tbl $(OUTPUT)arch/x86/include/generated/asm/syscalls_64.c FORCE | ||
152 | $(call rule_mkdir) | ||
153 | $(call if_changed_dep,cc_o_c) | ||
154 | |||
151 | $(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE | 155 | $(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE |
152 | $(call rule_mkdir) | 156 | $(call rule_mkdir) |
153 | $(call if_changed_dep,cc_o_c) | 157 | $(call if_changed_dep,cc_o_c) |
diff --git a/tools/perf/util/syscalltbl.c b/tools/perf/util/syscalltbl.c index eb74a97b1f11..bbb4c1957578 100644 --- a/tools/perf/util/syscalltbl.c +++ b/tools/perf/util/syscalltbl.c | |||
@@ -21,6 +21,12 @@ | |||
21 | #include <string.h> | 21 | #include <string.h> |
22 | #include "util.h" | 22 | #include "util.h" |
23 | 23 | ||
24 | #if defined(__x86_64__) | ||
25 | #include <asm/syscalls_64.c> | ||
26 | const int syscalltbl_native_max_id = SYSCALLTBL_x86_64_MAX_ID; | ||
27 | static const char **syscalltbl_native = syscalltbl_x86_64; | ||
28 | #endif | ||
29 | |||
24 | struct syscall { | 30 | struct syscall { |
25 | int id; | 31 | int id; |
26 | const char *name; | 32 | const char *name; |