diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2011-11-11 15:55:49 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2011-11-17 13:35:36 -0800 |
commit | d181764ccf6207e02abb95fb3052639b947f4833 (patch) | |
tree | cd37381b20d437d5d352a07b20fd4a01d332759b /arch/x86/syscalls/syscallhdr.sh | |
parent | d5e553d6e0a4bdea43adae7373e3fa144b9a1aaa (diff) | |
download | talos-op-linux-d181764ccf6207e02abb95fb3052639b947f4833.tar.gz talos-op-linux-d181764ccf6207e02abb95fb3052639b947f4833.zip |
x86: Machine-readable syscall tables and scripts to process them
Create a simple set of syscall tables and scripts to turn them into
both header files (unistd_*.h) and macros for generating the system
call tables.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/syscalls/syscallhdr.sh')
-rw-r--r-- | arch/x86/syscalls/syscallhdr.sh | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/x86/syscalls/syscallhdr.sh b/arch/x86/syscalls/syscallhdr.sh new file mode 100644 index 000000000000..0d473ff12eaf --- /dev/null +++ b/arch/x86/syscalls/syscallhdr.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +in="$1" +out="$2" +my_abis=`echo "$3" | tr ',' ' '` +prefix="$4" +offset="$5" + +fileguard=_ASM_X86_`basename "$out" | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ + -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'` + +in_list () { + local x + for x in $1; do + if [ x"$x" = x"$2" ]; then + return 0 + fi + done + return 1 +} + +grep '^[0-9]' "$in" | sort -n | ( + echo "#ifndef ${fileguard}" + echo "#define ${fileguard} 1" + echo "" + + while read nr abi name entry ; do + if in_list "$my_abis" "$abi"; then + echo "#define __NR_${prefix}${name}" $((nr+offset)) + fi + done + + echo "" + echo "#endif /* ${fileguard} */" +) > "$out" |