| #!/bin/sh |
| |
| output="linux_syscall_numbers.h" |
| output_pid="${output}.$$" |
| |
| srcdir=${0%/*} |
| |
| cat << EOF > "${output_pid}" |
| /************************************************ |
| * GENERATED FILE: DO NOT EDIT/PATCH THIS FILE * |
| * change your arch specific .in file instead * |
| ************************************************/ |
| |
| /* |
| * Here we stick all the ugly *fallback* logic for linux |
| * system call numbers (those __NR_ thingies). |
| * |
| * Licensed under the GPLv2 or later, see the COPYING file. |
| */ |
| |
| #ifndef __LINUX_SYSCALL_NUMBERS_H__ |
| #define __LINUX_SYSCALL_NUMBERS_H__ |
| |
| #include <errno.h> |
| #include <sys/syscall.h> |
| #include "cleanup.c" |
| |
| #define ltp_syscall(NR, ...) ({ \\ |
| int __ret; \\ |
| if (NR == 0) { \\ |
| errno = ENOSYS; \\ |
| __ret = -1; \\ |
| } else { \\ |
| __ret = syscall(NR, ##__VA_ARGS__); \\ |
| } \\ |
| if (__ret == -1 && errno == ENOSYS) { \\ |
| tst_brkm(TCONF, CLEANUP, \\ |
| "syscall " #NR " not supported on your arch"); \\ |
| errno = ENOSYS; \\ |
| } \\ |
| __ret; \\ |
| }) |
| |
| EOF |
| |
| for arch in $(cat "${srcdir}/order") ; do |
| echo -n "Generating data for arch $arch ... " |
| |
| echo "" >> "${output_pid}" |
| echo "#ifdef __${arch}__" >> "${output_pid}" |
| while read line ; do |
| set -- $line |
| nr="__NR_$1" |
| shift |
| if [ -z "$*" ] ; then |
| echo "invalid line found" |
| exit 1 |
| fi |
| cat <<-EOF >> "${output_pid}" |
| # ifndef $nr |
| # define $nr $* |
| # endif |
| EOF |
| done < "${srcdir}/${arch}.in" |
| echo "#endif" >> "${output_pid}" |
| echo "" >> "${output_pid}" |
| |
| echo "OK!" |
| done |
| |
| echo -n "Generating stub list ... " |
| echo "" >> "${output_pid}" |
| echo "/* Common stubs */" >> "${output_pid}" |
| for nr in $(awk '{print $1}' "${srcdir}/"*.in | sort -u) ; do |
| nr="__NR_$nr" |
| cat <<-EOF >> "${output_pid}" |
| # ifndef $nr |
| # define $nr 0 |
| # endif |
| EOF |
| done |
| echo "#endif" >> "${output_pid}" |
| |
| mv "${output_pid}" "${output}" |
| echo "OK!" |