Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / mimlib / isyscall.mud
diff --git a/mim/development/mim/vax/mimlib/isyscall.mud b/mim/development/mim/vax/mimlib/isyscall.mud
new file mode 100644 (file)
index 0000000..c1807f0
--- /dev/null
@@ -0,0 +1,191 @@
+<PACKAGE "ISYSCALL">
+
+<RENTRY CALL ISYSCALL SYSCALL PIPE OBJECT LENU>
+
+<SETG CM-OBL <MOBLIST CHMKS>>
+
+<DEFINE XMSETG (X Y)
+  <SETG <OR <LOOKUP .X ,CM-OBL>
+           <INSERT .X ,CM-OBL>>
+       .Y>>
+
+<COND
+ (<GASSIGNED? XMSETG>
+  <SETG ALL-CHMKS [ <XMSETG "EXIT" 1>
+                 <XMSETG "FORK" 2>
+                 <XMSETG "READ" 3>
+                 <XMSETG "WRITE" 4>
+                 <XMSETG "OPEN" 5>
+                 <XMSETG "CLOSE" 6>
+                 ;<XMSETG "WAIT" 7>
+                 <XMSETG "CREAT" 8>
+                 <XMSETG "LINK" 9>
+                 <XMSETG "UNLINK" 10>
+                 <XMSETG "EXEC" 11>
+                 <XMSETG "CHDIR" 12>
+                 ;<XMSETG "TIME" 13>
+                 <XMSETG "MKNOD" 14>
+                 <XMSETG "CHMOD" 15>
+                 <XMSETG "CHOWN" 16>
+                 ;<XMSETG "BREAK" 17>
+                 ;<XMSETG "STAT" 18>
+                 <XMSETG "LSEEK" 19>
+                 <XMSETG "GETPID" 20>
+                 <XMSETG "MOUNT" 21>
+                 <XMSETG "UMOUNT" 22>
+                 ;<XMSETG "SETUID" 23>
+                 <XMSETG "GETUID" 24>
+                 ;<XMSETG "STIME" 25>
+                 <XMSETG "PTRACE" 26>
+                 ;<XMSETG "ALARM" 27>
+                 ;<XMSETG "FSTAT" 28>
+                 ;<XMSETG "PAUSE" 29>
+                 ;<XMSETG "UTIME" 30>
+                 ;<XMSETG "STTY" 31>
+                 ;<XMSETG "GTTY" 32>
+                 <XMSETG "ACCESS" 33>
+                 ;<XMSETG "NICE" 34>
+                 ;<XMSETG "FTIME" 35>
+                 <XMSETG "SYNC" 36>
+                 <XMSETG "KILL" 37>
+                 <XMSETG "STAT" 38>
+                 ;<XMSETG "SETPGRP" 39>
+                 <XMSETG "LSTAT" 40>
+                 <XMSETG "DUP" 41>
+                 <XMSETG "PIPE" 42>
+                 ;<XMSETG "TIMES" 43>
+                 <XMSETG "PROFIL" 44>
+                 ;<XMSETG "SETGID" 46>
+                 <XMSETG "GETGID" 47>
+                 ;<XMSETG "SIGNAL" 48>
+                 <XMSETG "ACCT" 51>
+                 ;<XMSETG "PHYS" 52>
+                 ;<XMSETG "LOCK" 53>
+                 <XMSETG "IOCTL" 54>
+                 <XMSETG "REBOOT" 55>
+                 ;<XMSETG "MPX" 56>
+                 <XMSETG "SYMLINK" 57>
+                 <XMSETG "READLINK" 58>
+                 <XMSETG "EXECVE" 59>
+                 <XMSETG "UMASK" 60>
+                 <XMSETG "CHROOT" 61>
+                 <XMSETG "FSTAT" 62>
+                 <XMSETG "GETPAGESIZE" 64>
+                 <XMSETG "MREMAP" 65>
+                 <XMSETG "VFORK" 66>
+                 ;<XMSETG "VREAD" 67>
+                 ;<XMSETG "VWRITE" 68>
+                 <XMSETG "SBRK" 69>
+                 <XMSETG "SSTK" 70>
+                 <XMSETG "MMAP" 71>
+                 <XMSETG "VADVISE" 72>
+                 <XMSETG "VHANGUP" 76>
+                 ;<XMSETG "VLIMIT" 77>
+                 <XMSETG "MINCORE" 78>
+                 <XMSETG "GETGROUPS" 79>
+                 <XMSETG "SETGROUPS" 80>
+                 <XMSETG "GETPGRP" 81>
+                 <XMSETG "SETPGRP" 82>
+                 <XMSETG "SETITIMER" 83>
+                 <XMSETG "WAIT" 84>
+                 <XMSETG "VSWAPON" 85>
+                 <XMSETG "GETITIMER" 86>
+                 <XMSETG "GETHOSTNAME" 87>
+                 <XMSETG "SETHOSTNAME" 88>
+                 <XMSETG "GETDTABLESIZE" 89>
+                 <XMSETG "DUP2" 90>
+                 <XMSETG "GETDOPT" 91>
+                 <XMSETG "FCNTL" 92>
+                 <XMSETG "SELECT" 93>
+                 <XMSETG "SETDOPT" 94>
+                 <XMSETG "FSYNC" 95>
+                 <XMSETG "SETPRIORITY" 96>
+                 <XMSETG "SOCKET" 97>
+                 <XMSETG "CONNECT" 98>
+                 <XMSETG "ACCEPT" 99>
+                 <XMSETG "GETPRIORITY" 100>
+                 <XMSETG "SEND" 101>
+                 <XMSETG "RECV" 102>
+                 <XMSETG "BIND" 104>
+                 <XMSETG "SETSOCKOPT" 105>
+                 <XMSETG "LISTEN" 106>
+                 <XMSETG "VTIMES" 107>
+                 <XMSETG "SIGVEC" 108>
+                 <XMSETG "SIGBLOCK" 109>
+                 <XMSETG "SIGSETMASK" 110>
+                 <XMSETG "SIGPAUSE" 111>
+                 <XMSETG "SIGSTACK" 112>
+                 <XMSETG "RECVMSG" 113>
+                 <XMSETG "SENDMSG" 114>
+                 <XMSETG "GETTIMEOFDAY" 116>
+                 <XMSETG "GETRUSAGE" 117>
+                 <XMSETG "GETSOCKOPT" 118>
+                 <XMSETG "READV" 120>
+                 <XMSETG "WRITEV" 121>
+                 <XMSETG "SETTIMEOFDAY" 122>
+                 <XMSETG "FCHOWN" 123>
+                 <XMSETG "FCHMOD" 124>
+                 <XMSETG "RECVFROM" 125>
+                 <XMSETG "SETREUID" 126>
+                 <XMSETG "SETREGID" 127>
+                 <XMSETG "RENAME" 128>
+                 <XMSETG "TRUNCATE" 129>
+                 <XMSETG "FTRUNCATE" 130>
+                 <XMSETG "FLOCK" 131>
+                 <XMSETG "SENDTO" 133>
+                 <XMSETG "SHUTDOWN" 134>
+                 <XMSETG "SOCKETPAIR" 135>
+                 <XMSETG "MKDIR" 136>
+                 <XMSETG "RMDIR" 137>
+                 <XMSETG "UTIMES" 138>
+                 <XMSETG "REVOKE" 140>
+                 <XMSETG "GETPEERNAME" 141>
+                 <XMSETG "GETHOSTID" 142>
+                 <XMSETG "SETHOSTID" 143>
+                 <XMSETG "GETRLIMIT" 144>
+                 <XMSETG "SETRLIMIT" 145>
+                 <XMSETG "KILLPG" 146>
+                 <XMSETG "SETQUOTA" 148>
+                 <XMSETG "QUOTA" 149>
+                 <XMSETG "GETSOCKNAME" 150>]>)>
+
+<DEFINE INTCALL (WHICH "TUPLE" ARGS "AUX" ATM VAL CHMK)
+  <COND (<AND <TYPE? .WHICH ATOM>
+             <MEMBER <SPNAME .WHICH>
+                     '["WAIT" "SIGPAUSE" "READ" "READV" "WRITE" "WRITEV"
+                       "CONNECT" "SELECT" "SEND" "RECV" "RECVMSG" "SENDMSG"
+                       "SENDTO" "RECVFROM" "ACCEPT"]>>
+        <COND (<AND <SET ATM <LOOKUP <SPNAME .WHICH> ,CM-OBL>>
+                    <GASSIGNED? .ATM>
+                    <SET CHMK ,.ATM>>
+               <CALL SETS RUNINT -1>
+               <SET VAL <CALL SYSCALL .CHMK !.ARGS>>
+               <CALL SETS RUNINT 0>
+               .VAL)
+              (<ERROR CANT-ENABLE-INTERRUPTS .WHICH ISYSCALL>)>)>>
+        
+
+<DEFINE ICALL (NAME WHICH "TUPLE" ARGS "AUX" CHMK ATM)
+  #DECL ((NAME) ATOM (ARGS) TUPLE)
+  <COND (<==? .NAME PIPE>
+        <CALL PIPE .WHICH>)
+       (<==? .NAME VALUE>
+        <CALL VALUE .WHICH>)
+       (<==? .NAME TYPE>
+        <CALL TYPE .WHICH>)
+       (<==? .NAME LENGTH>
+        <CALL LENU .WHICH>)
+       (<==? .NAME OBJECT>
+        <CALL OBJECT .WHICH <1 .ARGS> <2 .ARGS>>)
+       (<N==? .NAME SYSCALL>
+        <ERROR NOT-IMPLEMENTED .NAME CALL>)
+       (<AND <SET ATM <LOOKUP <SPNAME .WHICH> ,CM-OBL>>
+             <GASSIGNED? .ATM>
+             <SET CHMK ,.ATM>>
+        <CALL SYSCALL .CHMK !.ARGS>)>>
+
+<COND (<==? <TYPEPRIM FIX> FIX>
+       <SETG CALL ,ICALL>
+       <SETG ISYSCALL ,INTCALL>)>
+
+<ENDPACKAGE>