/scripts/getsyscalls
http://github.com/Eelis/geordi · Shell · 22 lines · 20 code · 1 blank · 1 comment · 0 complexity · a301b206d8e3143522615e01a26a1635 MD5 · raw file
- #!/bin/sh
- set -e
- echo "module SysCalls where"
- echo "import Foreign.C"
- echo
- echo "#include <asm/unistd.h>"
- echo
- echo "data SysCall = "
- echo "#include <asm/unistd.h>" | g++ -E -dM - | sed -nr 's/^#define __NR_(\w*) .*$/ SYS_\1 |/p' | sort | uniq
- echo " UnknownSysCall CLong"
- echo " deriving (Eq, Show)"
- echo
- echo "fromNumber :: CLong -> SysCall"
- echo "fromNumber x = case x of"
- echo "#include <asm/unistd.h>" | g++ -E -dM - | sed -nr 's/^#define __NR_(\w*) .*$/ (#const __NR_\1) -> SYS_\1/p' | sort | uniq
- echo " _ -> UnknownSysCall x"
- echo
- echo "toNumber :: SysCall -> CLong"
- echo "toNumber x = case x of"
- echo "#include <asm/unistd.h>" | g++ -E -dM - | sed -nr 's/^#define __NR_(\w*) .*$/ SYS_\1 -> (#const __NR_\1)/p' | sort | uniq
- echo " UnknownSysCall y -> y"