blob: e4232c45d2552074e87895ea5c130f5237edd83e [file] [log] [blame]
#!/bin/bash
# Barret Rhoden <brho@cs.berkeley.edu>
# Builds a syscall table, an array of strings of syscall names.
# Used by parlib.
if [ $# -ne 2 ]
then
echo "Need syscall.h and output file args!"
exit -1
fi
SYSLIST=$1
SYSCALL_TBL=$2
echo "// This was automatically generated with make_syscall_tbl.sh, do not edit" > $SYSCALL_TBL
echo "" >> $SYSCALL_TBL
echo "const char *const __syscall_tbl[] =" >> $SYSCALL_TBL
echo "{" >> $SYSCALL_TBL
# Read lines formatted as:
#
# #define SYS_foo 1
# #define SYS_bar 3
#
# And output them as:
#
# [ 1 ] = "foo",
# [ 3 ] = "bar",
#
# Here's the guts of it. Get the #define SYS_'s, compress the whitespace, cut
# to drop the #define, drop the SYS_, then awk it.
cat $SYSLIST | grep "^#define SYS_" \
| sed 's/\s\+/\t/g' \
| cut -f 2- \
| sed 's/SYS_//' \
| awk '{printf "\t[ %s ] = \"%s\",\n", $2, $1}' \
>> $SYSCALL_TBL
echo "};" >> $SYSCALL_TBL
echo "" >> $SYSCALL_TBL
echo "const int __syscall_tbl_sz = sizeof (__syscall_tbl) / sizeof (__syscall_tbl[0]);" >> $SYSCALL_TBL