/scripts/getsyscalls

http://github.com/Eelis/geordi · Shell · 22 lines · 20 code · 1 blank · 1 comment · 0 complexity · a301b206d8e3143522615e01a26a1635 MD5 · raw file

  1. #!/bin/sh
  2. set -e
  3. echo "module SysCalls where"
  4. echo "import Foreign.C"
  5. echo
  6. echo "#include <asm/unistd.h>"
  7. echo
  8. echo "data SysCall = "
  9. echo "#include <asm/unistd.h>" | g++ -E -dM - | sed -nr 's/^#define __NR_(\w*) .*$/ SYS_\1 |/p' | sort | uniq
  10. echo " UnknownSysCall CLong"
  11. echo " deriving (Eq, Show)"
  12. echo
  13. echo "fromNumber :: CLong -> SysCall"
  14. echo "fromNumber x = case x of"
  15. echo "#include <asm/unistd.h>" | g++ -E -dM - | sed -nr 's/^#define __NR_(\w*) .*$/ (#const __NR_\1) -> SYS_\1/p' | sort | uniq
  16. echo " _ -> UnknownSysCall x"
  17. echo
  18. echo "toNumber :: SysCall -> CLong"
  19. echo "toNumber x = case x of"
  20. echo "#include <asm/unistd.h>" | g++ -E -dM - | sed -nr 's/^#define __NR_(\w*) .*$/ SYS_\1 -> (#const __NR_\1)/p' | sort | uniq
  21. echo " UnknownSysCall y -> y"