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