Commit d21832e2 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Masahiro Yamada

kbuild: speed up checksyscalls.sh

checksyscalls.sh is run at every "make" run while building the kernel,
even if no files have changed. I looked at where we spend time in
a trivial empty rebuild and found checksyscalls.sh to be a source
of noticeable overhead, as it spawns a lot of child processes just
to call 'cat' copying from stdin to stdout, once for each of the
over 400 x86 syscalls.

Using a shell-builtin (echo) instead of the external command gives
us a 13x speedup:

    Before		   After
real	0m1.018s       real	0m0.077s
user	0m0.068s       user	0m0.048s
sys	0m0.156s       sys	0m0.024s

The time it took to rebuild a single file on my machine dropped
from 5.5 seconds to 4.5 seconds.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
parent 6f0fa58e
...@@ -202,15 +202,12 @@ EOF ...@@ -202,15 +202,12 @@ EOF
} }
syscall_list() { syscall_list() {
grep '^[0-9]' "$1" | sort -n | ( grep '^[0-9]' "$1" | sort -n |
while read nr abi name entry ; do while read nr abi name entry ; do
cat <<EOF echo "#if !defined(__NR_${name}) && !defined(__IGNORE_${name})"
#if !defined(__NR_${name}) && !defined(__IGNORE_${name}) echo "#warning syscall ${name} not implemented"
#warning syscall ${name} not implemented echo "#endif"
#endif
EOF
done done
)
} }
(ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \ (ignore_list && syscall_list $(dirname $0)/../arch/x86/entry/syscalls/syscall_32.tbl) | \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment