Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+456 -5
+9 -4
tools/perf/Makefile.perf
··· 183 183 include config/Makefile 184 184 endif 185 185 186 + ifeq ($(config),0) 187 + include $(srctree)/tools/scripts/Makefile.arch 188 + -include arch/$(ARCH)/Makefile 189 + endif 190 + 186 191 # The FEATURE_DUMP_EXPORT holds location of the actual 187 192 # FEATURE_DUMP file to be used to bypass feature detection 188 193 # (for bpf or any other subproject) ··· 393 388 __build-dir = $(subst $(OUTPUT),,$(dir $@)) 394 389 build-dir = $(if $(__build-dir),$(__build-dir),.) 395 390 396 - prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h fixdep 391 + prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h fixdep archheaders 397 392 398 393 $(OUTPUT)%.o: %.c prepare FORCE 399 394 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@ ··· 433 428 434 429 LIBPERF_IN := $(OUTPUT)libperf-in.o 435 430 436 - $(LIBPERF_IN): fixdep FORCE 431 + $(LIBPERF_IN): prepare fixdep FORCE 437 432 $(Q)$(MAKE) $(build)=libperf 438 433 439 434 $(LIB_FILE): $(LIBPERF_IN) ··· 628 623 $(call QUIET_CLEAN, config) 629 624 $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ $(if $(OUTPUT),OUTPUT=$(OUTPUT)feature/,) clean >/dev/null 630 625 631 - clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean 626 + clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean 632 627 $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS) 633 628 $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete 634 629 $(Q)$(RM) $(OUTPUT).config-detected ··· 665 660 .PHONY: all install clean config-clean strip install-gtk 666 661 .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell 667 662 .PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE prepare 668 - .PHONY: libtraceevent_plugins 663 + .PHONY: libtraceevent_plugins archheaders 669 664
+23
tools/perf/arch/x86/Makefile
··· 4 4 HAVE_KVM_STAT_SUPPORT := 1 5 5 PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET := 1 6 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)
+374
tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
··· 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
+39
tools/perf/arch/x86/entry/syscalls/syscalltbl.sh
··· 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}"
+1 -1
tools/perf/config/Makefile
··· 27 27 ifeq ($(ARCH),x86) 28 28 $(call detected,CONFIG_X86) 29 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 31 ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S 32 32 LIBUNWIND_LIBS = -lunwind -lunwind-x86_64 33 33 $(call detected,CONFIG_X86_64)
+4
tools/perf/util/Build
··· 148 148 CFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 149 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 155 $(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE 152 156 $(call rule_mkdir) 153 157 $(call if_changed_dep,cc_o_c)
+6
tools/perf/util/syscalltbl.c
··· 21 21 #include <string.h> 22 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 30 struct syscall { 25 31 int id; 26 32 const char *name;