mksystab 783 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/rc
  2. file=/sys/src/libc/9syscall/sys.h
  3. cat <<'!'
  4. #include "/sys/src/libc/9syscall/sys.h"
  5. typedef long Syscall(ulong*);
  6. !
  7. sed 's/#define[ ]*([A-Z0-9_][A-Z0-9_]*).*/SYS\1/; s/SYSSYSR1/SYSR1/' $file |
  8. tr A-Z a-z |
  9. sed 's/.*/Syscall &;/'
  10. cat <<'!'
  11. Syscall sysdeath;
  12. Syscall *systab[]={
  13. !
  14. sam -d $file >[2] /dev/null <<'!'
  15. ,s/#define.([A-Z0-9_]+).*/ [\1] SYS\1,/g
  16. ,x/SYS[A-Z0-9_]+,/ | tr A-Z a-z
  17. ,x/syssysr1/c/sysr1
  18. ,x/sys_x[0-9]*/c/sysdeath
  19. ,x v/\[......+\]/ s/\]/]
  20. ,p
  21. !
  22. cat <<'!'
  23. };
  24. char *sysctab[]={
  25. !
  26. sam -d $file >[2] /dev/null <<'!'
  27. ,s/#define.([A-Z0-9_]+).*/ [\1] "\1",/g
  28. ,x/"[A-Z0-9_]+",/ y/"[A-Z]/ | tr A-Z a-z
  29. ,x/_"/c/"
  30. ,x/Sysr1/c/Running
  31. ,x/Rendezvous/c/Rendez
  32. ,x v/\[......+\]/ s/\]/]
  33. ,p
  34. !
  35. cat <<'!'
  36. };
  37. int nsyscall = (sizeof systab/sizeof systab[0]);
  38. !